I wanted to build an awesome place for people to discuss module specific issues, but I don't have any more time for this, and there are much better places to discuss Perl-related issues. I'd recommend asking your question on Stack Overflow or on Perl Monks.
If you are looking for a Perl tutorial or Perl-related news, I hope these links will serve you well.
Posted on 2010-01-12 06:40:48.33571-08 by mckyj57
Activating namespaces in SOAP::WSDL
Thank you for this excellent module.

I have used wsdl2perl.pl to generate classes, and have found this interface easy to use. I am able to generate a properly-encapsulated message with a call, but can't seem to find the invocation that will enable full namespacing. I know I could eventually trace my way through the serializer code and hack it in, but it seems it should be simple to do so.

The namespace calls did make it in via the import, so I am able to see the xmlns:tns and xmlns:xs definitions in my interface Element files.

Here is what I am currently generating:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www +.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ProcessTransaction xmlns="http://tempuri.org/"> <request> <Password>xxxx</Password> <UserId>xxxx</UserId> <Amount>1.01</Amount> <TaxAmount>0.00</TaxAmount> <TransactionType>Sale</TransactionType> </request> </ProcessTransaction> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
I would like to make this be:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s="http://www.w +3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <tns:ProcessTransaction xmlns:tns="http://tempuri.org/"> <tns:request> <tns:Password xmlns:tns="http://schemas.datacontract.org/2004/07/.EPayment.VirtualTerminal. +Common">xxxxx</tns:Password> <tns:UserId xmlns:tns="http://schemas.datacontract.org/2004/07/.EPayment.VirtualTerminal.Co +mmon">xxxx</tns:UserId> <tns:Amount xmlns:tns="http://schemas.datacontract.org/2004/07/.EPayment.VirtualTerminal.Co +mmon">1.01</tns:Amount> <tns:TaxAmount xmlns:tns="http://schemas.datacontract.org/2004/07/.EPayment.VirtualTerminal +.Common">0</tns:TaxAmount> <tns:TransactionType xmlns:tns="http://schemas.datacontract.org/2004/07/.EPayment.VirtualTe +rminal.Common">Sale</tns:TransactionType> </tns:request> </tns:ProcessTransaction> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

If there are any serializer options which can be invoked at object creation, I would appreciate it.

This arises out of this code:
require MyInterfaces::Service::BasicBinding; my $soap = MyInterfaces::Service::BasicBinding-&gt;new( { deserializer_args =&gt; { strict =&gt; 0 }, }) or do { die "Unable to import SOAP object WSDL."; }; my $out = $soap-&gt;ProcessTransaction({ request =&gt; \%query });
Direct Responses: Write a response