NuSoap - PHP + Delphi

12/05/2017

0

Criei um servidor soap PHP, utilizando a biblioteca NuSoap disponível aqui

Eu consigo enviar e receber os dados para esse servidor utilizando HTTP
Meu problema começou na hora de tentar integrar com Delphi

No Delphi existe a função WSDL Importer, e o NuSoap gera o WSDL automaticamente, de acordo com as funções e os tipos definidos

O problema é que meus objetos que deveriam receber o retorno dessas chamadas no Delphi ficam como NIL

um exemplo de chamada
  versaoUpdate := VersaoUpdateRequest.Create();

  versaoUpdate.VersaoBanco := '3';
  versaoUpdate.VersaoExe := '3';
  
  Response := GetPortType(true, '', HTTPRIO1).AtualizarVersao(versaoUpdate);


Meu código segue sem erro nenhum, mas meu objeto Response, que é do tipo SimpleResponse (O mesmo tipo retornado pela função AtualizarVersao)
fica NIL

Não achei nenhuma solução ainda, suspeito que o problema seja o WSDL, já utilizei WSDL Importer com outros projetos e a serialização de objetos
sempre ocorreu bem,

Exemplo do WSDL
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="teste" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="teste">
<types>
<xsd:schema targetNamespace="teste">
<xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
<xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
<xsd:complexType name="SimpleResponse">
<xsd:sequence>
<xsd:element name="Codigo" type="xsd:int"/>
<xsd:element name="Descricao" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VersaoUpdateRequest">
<xsd:sequence>
<xsd:element name="ProjetoCliente" type="xsd:int"/>
<xsd:element name="SenhaPrivada" type="xsd:string"/>
<xsd:element name="Projeto" type="xsd:string"/>
<xsd:element name="VersaoBanco" type="xsd:string"/>
<xsd:element name="VersaoExe" type="xsd:string"/>
<xsd:element name="VersaoFirebird" type="xsd:string"/>
<xsd:element name="DataAtualizacao" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="AtualizarVersaoRequest">
<part name="VersaoUpdateRequest" type="tns:VersaoUpdateRequest"/>
</message>
<message name="AtualizarVersaoResponse">
<part name="SimpleResponse" type="tns:SimpleResponse"/>
</message>
<portType name="testePortType">
<operation name="AtualizarVersao">
<documentation>Atualiza dados relacionados ao projeto do cliente</documentation>
<input message="tns:AtualizarVersaoRequest"/>
<output message="tns:AtualizarVersaoResponse"/>
</operation>
</portType>
<binding name="testeBinding" type="tns:testePortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="AtualizarVersao">
<soap:operation soapAction="http://localhost/webservice/soap/index.php/AtualizarVersao" style="rcp"/>
<input>
<soap:body use="encoded" namespace="" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="teste">
<port name="testePort" binding="tns:testeBinding">
<soap:address location="http://localhost/webservice/soap/index.php"/>
</port>
</service>
</definitions>


É a primeira vez que eu mesmo estou desenvolvendo o WebService
Nicolas

Nicolas

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar