When a .net client makes a call to user_soap_login(), the response an object. But, I believe the WSDL is wrong, and .net is interpreting this as a string. I think it has something to do with the xsd1:struct type defined in the wsdl.

Raw response:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:xmethods-delayed-quotes">
  <SOAP-ENV:Body>
    <ns1:user_soap_loginResponse>
      <response_object>
        <sessid>lg8kkh8t469l783g53bh0u5tr5</sessid>
        <session_name>SESSe6a2eadc23ad84d28c62c6ddf071988d</session_name>
        <user>
...

The parsed response only contains a string containing the value of "sessid"

When code is generated through wsdl.exe, this is what comes back for the responses:

return ((string)(this.results[0]));

So it's doing exactly that...returning the first element of the result set as a string. :\

Comments

djdevin’s picture

Issue summary: View changes

add xsd1:struct

djdevin’s picture

StatusFileSize
new7.69 KB
new80.67 KB

The only way I was able to get soap server to work well with a WSDL proxy (basically, a wizard to generate a classfile) was to rewrite the entire WSDL as document literal instead of RPC literal.

Now, responses show up correctly and wsdl.exe understands it. Patch is for 6.x but 7.x is probably similar.

This changes the way PHP handles it though, now the responses come back as encapsulated XML. Since we're not defining return values I'm not sure how to get around this.

djdevin’s picture

Issue summary: View changes

wsdl.exe

kirie’s picture

Issue summary: View changes
StatusFileSize
new11.47 KB

Thank you for this! I updated the patch so it applies cleanly to 7.x-3.0-beta1, just in case there are others out there having to deal with this.

maheshpa’s picture

Thank you Kirie!

I have applied the above patch to 7.x-3.0-beta1 it is applied successfully. At .net methods are available but after patch the node_soap_retrieve() giving me empty response object for all resource call. Event I have tested through Web service Client module that also giving me an same response. Please correct if I miss anything.