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
Comment #0.0
djdevinadd xsd1:struct
Comment #1
djdevinThe 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.
Comment #1.0
djdevinwsdl.exe
Comment #2
kirie commentedThank 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.
Comment #3
maheshpa commentedThank 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.