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
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
É a primeira vez que eu mesmo estou desenvolvendo o WebService
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)