Subject: | SOAP::Serializer->{_use_default_ns} clobbered by _call() |
Distribution: SOAP-Lite-0.710.07
Perl version: 5.8.7
When a call to astubbed SOAP method defined in a WSDL is made, the
_call() method is invoked (Lite.pm line 3235). In that method, ns() is
invoked (Lite.pm line 3257). Inside of ns(), the _use_default_ns
attribute is unconditionally set to 0 (Lite.pm line 862), overwriting
the default value of 1 as well as any value that might have been
explicitly set with the default_ns() method.
Because _use_default_ns is always going to be false, I'm seeing
incorrect namespaces being attached to the body action element of my
SOAP requests. Specifically, Lite.pm line 1519 is never evaluated to
true, and the body isn't set up explicitly as a SOAP::Data element with
the xmlns attr correspdonding to _ns_uri.
An example program exhibiting this problem with SOAP::Lite 0.710.07 is:
http://code.google.com/p/adwords-api-perl-samples/source/browse/trunk/src/get_all_ad_groups.pl
The solution I found to this is commenting out Lite.pm line 862:
# $self->{'_use_default_ns'} = 0;
That seems to suit my needs, but it obviously may have side effects for
other SOAP services. Could some approach that either removes or only
conditionally executes that line of code be added to the official release?