SOAP:Lite is causing me nightmares. What I want to do is catch both message erros and network errors while sending a soap message. I have successfully achieve the former by making my soap connection as follows:
$soap = SOAP::Lite
-> uri($config{'uri'})
-> on_action(sub {sprintf '"%s%s"', @_})
-> proxy("http://$proxy_to_use/LoadIntraday/LoadIntraDayDa
+ta.asmx")
-> on_fault( sub {} );
However I am not sucessfully able to trap Network transmission errors. By this I mean when the receiving server craps out halfway while receiving my message, its casusing my program to crash too. I simply want to catch this error and report it instead of exiting the program.
I have tried using the eval block but have not succeeded.
This is my current non working code
eval {
my $elem = SOAP::Data->name('strFile')->value($soapdata)->type('st
+ring');
$result = $soap->call(SOAP::Data->name('LoadIntraDaySwap')->attr({
+xmlns => 'https://www.primebroker.com/'}) => $elem );
};
# if eval reported an error
if ($@) {
#send out a email
} else {
# so no network error but there could be message errors
if ($soap->transport->status =~ /Error/){
print $result->faultcode
}else {
print "Success"
}
}