1
votes

I have python's based soap server and tried to call it functions using erlang (yaws_soap_lib based) soap client:

1> inets:start(). ok 2> yaws_soap_lib:call("http://127.0.0.1:90/soap/system/wsdl","cpu_count",[]). {ok,undefined,undefined}

here is what I was able to see with tcpdump program (answer of server to client):

HTTP/1.1.200.OK..Date:.Wed,.20.Oct.2010.15:56:11.GMT..Server:.Apache/2.2.15.(Unix).mod_wsgi/2.5.Python/2.5.2..Content-Length:.276..Content-Type:.text/xml

< SOAP-ENV:Envelope.xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance".xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > < SOAP-NV:Body> < cpu_countResponse>< cpu_countResult.xsi:type="xs:int">2< /cpu_countResult>< /cpu_countResponse>< /SOAP-ENV:Body>< /SOAP-ENV:Envelope>

as one can see in envelope server answer 2, but yaws_soap_lib:call was not able to see that 2 in the answer. is there an option to fix the issue?

Thanks.

1

1 Answers

0
votes

I suspect you have not specified NS prefix, which is by default "P" or "p" (I can't remember). So whenever you receive response soap client is not able to deserialize it, because it is represented in erlsom model as a record 'P:cpu_countResponse'.