我编写了一个Perl脚本,该脚本使用Soap::Lite
进行连接,并从Web服务收集数据并更新数据库。这很有效,直到密码被锁定并得到一个server 500 error
,这才是我的问题所在。在失败的情况下,如何让Soap::Lite
查询die
连接,因此它不会继续执行脚本的其余部分吗?
.....
my $host = "hostname";
my $user = "user";
my $pass = "pass";
$soap_proxy = "https://" . $user . ":" . $pass . "@" . $host . ":8090/services/ApiService";
$uri = "http://api.config.common.com";
$client = new SOAP::Lite
uri => $uri,
proxy => $soap_proxy,
autotype => 0;
my $soap_respons = $client->getSomething();
....
我已经尝试了常规的or die $!
,但是与其他查询不同,die
仍然会继续执行其余的脚本。
根据CPAN上的SOAP::Lite
示例,您可以使用:
if ($@) {
die $@;
}
但是我不知道该放在哪里。我直接在my $soap_respons
下尝试过,但仍然没有死。
答案 0 :(得分:1)
SOAP::Lite
查询将为fault
提供faultstring
结果,类似的事情应该起作用。
die $soap_respons->faultstring if ($soap_respons->fault);
print $soap_respons->result, "\n";
答案 1 :(得分:1)
您可以设置on_fault
回调。这样,您不必检查每个响应。
$client->on_fault(sub { die($_[1]) });