SOAP :: LIte on_fault不会覆盖默认错误处理

时间:2016-07-22 19:56:19

标签: perl soap wsdl

Centos 5 | Perl 5.10.0 | SOAP :: Lite 1.20

阅读了使用on_fault作为SOAP :: Lite的默认错误处理的覆盖的文档,我希望以下代码使用回调来进行错误处理。但是,我看到的是正在使用的默认值

#!/usr/bin/perl

use strict;
use SOAP::Lite;

my $log #calls to Log4Perl
my $soapServer = "http://somelocation/services/GdeWsOpenAPI?wsdl"
my $soap = new SOAP::Lite();
    $soap->on_fault( \&soapError );
    $soap->service($soapServer);

sub soapError {
     my($soap, $res) = @_;
     my $message = ref $res ? $res->faultstring : $soap->transport->status;
     $log->write( "fatal connection error to server $SoapServer: $message.", 0);
print STDERR "connection error: $message\n";
exit 1;
}

输出是: 无法加载服务说明“http://somelocation/services/GdeWsOpenAPI?wsdl”:500无法连接到某个位置:80

预期(因运输错误): 连接错误:无法加载服务描述“http://somelocation/services/GdeWsOpenAPI?wsdl”:500无法连接到某个位置:80

我错过了什么?

2 个答案:

答案 0 :(得分:0)

回调是针对进行SOAP调用时出现的问题。你没有那么远。

p_ename, p_ecmpy

答案 1 :(得分:-1)

故障是来自服务器的一种特殊类型的响应,表示您的请求出了问题"。在那里发生的事情没有错,它根本没有连接到服务器。你可能想要使用Try :: Tiny。