Thanks for the XML::Compile pointer. XML::Pastor also looks promising, at least from the standpoint of my handing it an XSD for generating Perl code for me.
As for SOAP::Lite -- I stopped looking at it when it failed to generate an envelope that the server liked. The envelope was sufficiently different from what does work, I set it aside. I think you are right, however, that the authentication problem is probably easier to solve with SOAP::Lite. Perhaps the envelope problem is worth look at in more detail.
# Handcraft XML -- works.
my $SOAP_UI_MIN = <<'END_SOAP_UI_MIN';
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ser="http://mysrv.xyz.foo.edu/">
<soapenv:Body>
<ser:userSearch>
<firstName>John</firstName>
<lastName>Smith</lastName>
</ser:userSearch>
</soapenv:Body>
</soapenv:Envelope>
END_SOAP_UI_MIN
# Generated by SOAP::WSDL -- works.
my $PSOAP_WSDL_MIN = <<'END_PSOAP_WSDL_MIN';
<SOAP-ENV:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" >
<SOAP-ENV:Body>
<userSearch xmlns="http://mysrv.xyz.foo.edu/">
<firstName xmlns="">John</firstName>
<lastName xmlns="">Smith</lastName>
</userSearch>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
END_PSOAP_WSDL_MIN
# Generated by SOAP::Lite -- doesn't work.
my $PSOAP_LITE_MIN = <<'END_PSOAP_LITE_MIN';
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<userSearch xmlns="https://mysrv.xyz.foo.edu/idService/userSearchReq
+uest">
<c-gensym3>
<firstName xsi:type="xsd:string">John</firstName>
<lastName xsi:type="xsd:string">Smith</lastName>
</c-gensym3>
</userSearch>
</soap:Body>
</soap:Envelope>
END_PSOAP_LITE_MIN
The last is rejected with...
Cannot find dispatch method for {https://mysrv.xyz.foo.edu/idService/u
+serSearchRequest}userSearch
I'm clueless about why SOAP::Lite generates what it does from the WSDL or how to coerce it to generate an acceptable envelope. |