【问题标题】:XML::Compile::SOAP and a fault callXML::Compile::SOAP 和错误调用
【发布时间】:2012-05-04 12:31:25
【问题描述】:

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

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

TIA!

【问题讨论】:

    标签: perl soap fault


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这是一个很酷的程序。它似乎看到了错误,所以我不知道 XML::Compile 发生了什么
    猜你喜欢
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多