in reply to Soap::Lite and Extra XML Definitions...

Okay this was a SOAP newbe error. Very difficult to find btw. It is not well documented in SOAP::Lite (probably because it is common XML knowledge) but the reason for the premature complex type termination was:

Complex types must be explicitly dereferenced.

Once this was corrected then none of the parameters showed up. This is also not well documented but the order of the ARRAY much be: METHOD, BODY, HEADER. DO NOT LEAVE ANYTHING OUT even if you call the method with the array. The corrected array:
@queryObj = ( method => 'OpGetList', SOAP::Data->type('s0:GetListInputMap')->name('OpGetList')->value +( \SOAP::Data->value( SOAP::Data->type('string')->name('Qualification'=>$QUERY), SOAP::Data->type('string')->name('startRecord'=>$STARTRECORD +), SOAP::Data->type('string')->name('maxLimit'=>$MAXLIMIT), ) ), SOAP::Header->name('AuthenticationInfo')->value( \SOAP::Header->value( ( SOAP::Header->name('userName')->value('xxx'), SOAP::Header->name('password')->value('xxx') ) )

Replies are listed 'Best First'.
Re^2: Soap::Lite and Extra XML Definitions...
by dneedles (Sexton) on Apr 07, 2011 at 22:53 UTC
    Arg. I spoke too soon. Though it now properly lists the parameters, it still also includes a terminated OpGetList. I do not get the appeal of SOAP. It is way too complicated and verbose for what it is trying to do. It's like doing math in Roman Numerals. That stalled math from about 0 until 1400. 8-P

    <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s0="urn:HD_Netcool_v1"> <soap:Header> <AuthenticationInfo> <userName xsi:type="xsd:string">xx</userName> <password xsi:type="xsd:string">xx</password> </AuthenticationInfo> </soap:Header> <soap:Body> <s0:OpGetList> <OpGetList xsi:nil="true" xsi:type="s0:GetListInputMap" /> <c-gensym8 xsi:type="xsd:string">OpGetList</c-gensym8> <OpGetList xsi:type="s0:GetListInputMap"> <Qualification xsi:type="xsd:string">'Submitter'="RemedyTicket +"</Qual ification> <startRecord xsi:type="xsd:string">0</startRecord> <maxLimit xsi:type="xsd:string">10</maxLimit> </OpGetList> </s0:OpGetList> </soap:Body> </soap:Envelope>