jpfarmer has asked for the wisdom of the Perl Monks concerning the following question:

I am making use of several SOAP calls in one of our applications. However, I'm running into a problem gracefully trapping errors. We connect to the SOAP service using a call like this:

use SOAP::Lite service => 'https://someserver.com/wsdl/Method.wsdl', on_fault => sub { print Dumper(@_), "\n"; exit; };

The code works correctly, but the fault handling is ugly. Dumper returns a ton of information and I only need a bit of it (the faultcode and fault string), but I can't figure out how to get to it. If I just print @_ directly, I get the following object reference: SOAP::Lite=HASH(0xa341f00)

Most of the relevant pages I can find on the web deal with cases where the function call itself fails, but I can't find any examples on how to handle the error when the proxy setup fails.

Any help would be greatly appreciated.

Replies are listed 'Best First'.
Re: Graceful error handling in SOAP
by jhourcle (Prior) on Dec 19, 2005 at 17:12 UTC

    It's described in the SOAP::Lite guide.

    In the example given:

    -> on_fault(sub { my($soap, $res) = @_; die ref $res ? $res->faultstring : $soap->transport->status, +"\n"; })

    It'll die with the faultstring if there's an SOAP fault, or with the transport status if there wasn't a result object. (and in the case of a failed connection, it'll be a transport error, with no result object.)