1

我在尝试处理 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 是空的。

关于我应该寻找什么的任何想法?

蒂亚!

4

1 回答 1

0

可能不是您问题的真正答案,但我还不能发表评论,所以这里有一个想法:尝试使用soapUI(他们也有一个免费版本,足以满足您的目标)或类似软件并测试您的 SOAP 服务以确保问题出在您的代码中,而不是在 SOAP 服务端。

于 2012-05-06T14:26:04.860 回答