Subject: | Problem deserializing SOAP messages that contain only a simpleType |
Attached are an example WSDL file, and a tgz that contains all the files
need for a test that fails because of this problem. You should be able
to extract it into the directory created when you extract the latest
SOAP::WSDL distribution.
DESCRIPTION:
If you have a WSDL that defines your messages are purely simple types
like this for example:
<types>
<xsd:schema elementFormDefault="qualified"
targetNamespace="http://web01-dev/prime">
<xsd:element name="PrimeRequest" type="xsd:integer"/>
<xsd:element name="PrimeResponse" type="xsd:boolean"/>
</xsd:schema>
</types>
<message name="PrimeRequest">
<part name="parameters" element="tns:PrimeRequest"/>
</message>
<message name="PrimeResponse">
<part name="parameters" element="tns:PrimeResponse"/>
</message>
Then SOAP::WSDL has problems deserializing the requests. The request is
serialized correctly, but when the server attempts to deserialize the
request the value is lost.
This goes across the wire:
<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
Show quoted text
><SOAP-ENV:Body><PrimeRequest
xmlns="http://web01-dev/prime">7</PrimeRequest></SOAP-ENV:Body></SOAP-ENV:Envelope>
but on the server the resulting MyElements::PrimeRequest object will not
produce anything when you call
$body->get_value()
You can work around this by using complextypes with a single element
instead, but that isn't optimal IMO.
Subject: | prime.st.wsdl |
Message body not shown because it is not plain text.
Subject: | SOAP-WSDL-t.tar.gz |
Message body not shown because it is not plain text.