我在尝试处理 SOAP 故障时遇到问题,我无法确定它是在我的一端还是另一端。
我正在使用 WSDL 文件,并且我有以下代码:
use XML::Compile::WSDL11;
use XML::Compile::SOAP11;
use XML::Compile::Transport::SOAPHTTP;
my $wsdlXml = XML::LibXML->new->parse_file("pathtowsdl");
my $wsdl = XML::Compile::WSDL11->new($wsdlXml);
my $call = $wsdl->compileClient('Add');
my %param = ('param1' => 'xxx',
'param2' => 'xxxx',
'param3' => 'xxxx',
'Name' => {
'first' => 'xxx',
'last' => 'xxx',
});
my ($response, $trace) = $call->(\%param);
如果我使用正确的参数调用它,那么一切都会按照您的想法进行,如果哈希引用具有我正在寻找的结果,则 $response。
但是,如果我造成了错误,那么我将一无所获。$response 中没有任何内容(根据 Data::Dumper)。
问题是,$trace 里面确实有肥皂信封。肥皂信封在成功和失败/错误的 $trace 中都有,但只有在成功时,$response 中才有东西,在失败时,信封中的“faultType”和“faultData”应该在 $response .
难道我做错了什么?从我读过的所有内容来看,听起来我不应该做任何不同的事情,在出现故障的情况下,我们应该有类似 $response->{'fault'} 的东西,但就像我说的,$response 是空的。
关于我应该寻找什么的任何想法?
蒂亚!