SOAP::Lite does not understand complex types in wsdl.
This means it can't generate useful stubs for service
methods that accept complex parameters.
For example, here is a sinppet of simple-type WSDL
that SOAP::Lite does understand:
<message name="getQuoteRequest1">
<part name="symbol" type="xsd:string"/>
</message>
...
<portType name="StockQuotePortType">
<operation name="getQuote" parameterOrder="symbol">
<input message="tns:getQuoteRequest1"/>
<output message="tns:getQuoteResponse1"/>
</operation>
</portType>
Here is a snippet of WSDL using complex types that
SOAP::Lite does not understand:
<wsdl:types>
<schema ....>
<complexType name="Person">
<sequence>
<element name="name" nillable="true"
type="xsd:string"/>
<element name="email" nillable="true"
type="xsd:string"/>
<element name="id" type="xsd:int" />
</sequence>
</complexType>
</schema></wsdl:types>
...
<wsdl:message name="addPersonRequest">
<wsdl:part name="newPerson" type="impl:Person/>
</wsdl:message>
...
<portType name="PersonService">
<wsdl:operation name="addPerson">
<wsdl:input message="impl:addPersonRequest"
name="addPersonRequest"/>
<wsdl:output message="impl:addPersonResponse"
name="addPersonResponse"/>
</wsdl:operation>
</portType>
------
SOAP::Lite seems to not resolve the extra layers of
indirection involved with referencing a complex type
defined in another section of the wsdl.
Logged In: YES
user_id=569674
I've also hit this bug.
Consider the WSDL:
http://ws1.api.re2.yahoo.com/ws/soap-demo/full.wsdl
This wsdl defines a method (strArrayReverse) that uses a
complex type (ArrayOfstring) for it's args. However, when
used, perl returns the error:
Type 'ArrayOfstring' can't be found in a schema class
'SOAP::Serializer'