in reply to using getters with SOAP::WSDL inside out objects

"Fault11" sounds like something went wrong. Flailing around a bit I did notice that SOAP::WSDL::SOAP::Typelib::Fault11 is documented. So see what get_faultstring() tells you.

- tye        

  • Comment on Re: using getters with SOAP::WSDL inside out objects (fault)

Replies are listed 'Best First'.
Re^2: using getters with SOAP::WSDL inside out objects (fault)
by mummra1 (Initiate) on May 29, 2013 at 15:34 UTC

    Thanks Tye, yes the output of get_faultstring gives me:

    Error deserializing message: Can't call method "get_class" on an undef +ined value at /opt/local/lib/perl5/site_perl/5.12.4/SOAP/WSDL/Expat/M +essageParser.pm line 318.

    I wonder if the module is having trouble with de-serialization.

      Looking at MessagerParser.pm, get_class() is called on the "class_resolver".

      The documentation mentions this snippet:

      my $parser = SOAP::WSDL::Expat::MessageParser->new({ class_resolver => 'My::Resolver' });

      It looks like a SOAP::WSDL::Expat::MessageParser is getting constructed with no class resolver specified. But the referenced docs about how to make a class resolver don't seem to actually put the pieces together about how you tell SOAP::WSDL which resolver to use. I suppose the "generator" is supposed to just take of that for you.

      So perhaps you need to double check how you ran the generator or look at what it generated to figure out the missing piece?

      (In case you haven't noticed, I have no experience with using SOAP.)

      - tye        

        Thanks again Tye - I did solve this after some more digging. There is a patch available to fix the latest release that solves this issue. I applied this and now I am able to run methods on the returned objects, w/o learning the exquisite details of each SOAP message ;)

        Yeah, I'm wondering about this because there are many WSDLs with this project, one of which is working properly (can use getters), which also happens to be the only wsdl for which a service name .pm file was created under the typemaps directory when wsdl2perl was run. I may re-run this and try again. Will update if things turn out for the better - thanks!