【问题标题】:SOAP::LIte on_fault not overriding default error handlingSOAP::LIte on_fault 不覆盖默认错误处理
【发布时间】:2016-07-23 05:22:53
【问题描述】:

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

我错过了什么?

【问题讨论】:

    标签: perl soap wsdl


    【解决方案1】:

    回调是针对进行 SOAP 调用时发生的问题。你还没走到那一步。

    my $soap = SOAP::Lite->new();
    $soap->on_fault( \&soapError );
    
    eval { $soap->service($soapServer); 1 }
        or die("Can't initialize the web service: $@");
    

    【讨论】:

      【解决方案2】:

      故障是来自服务器的一种特殊类型的响应,表示“您的请求出现问题”。发生的事情不是故障,它根本无法连接到服务器。您可能想为此使用 Try::Tiny。

      【讨论】:

      • 这不是真的。无法连接到服务器调用故障处理程序......如果它作为肥皂调用的一部分发生。正在发生的错误甚至在尝试 SOAP 调用之前就已经发生了。
      猜你喜欢
      • 2020-11-27
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 2015-12-29
      相关资源
      最近更新 更多