处理Perl SOAP Web服务结果

时间:2015-12-11 08:57:50

标签: perl soap

我正在呼叫一个Web服务,客户验证呼叫是否成功,这意味着我的数据非常适合我们的服务器。但不幸的是,我无法阅读输出。 这是我第一次遇到。我使用SOAP Web服务已经很多年了。

我正在调用Web服务如下,这是非常常见的

my $som = $soap->call(
  .............................
);

我试图得到如下结果,但它不起作用

my $result = $som->result;

当我使用SOAPUI调用Web服务时,我可以看到结果:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <WebServiceOutput xmlns="http://xmlns.oracle.com/keyword/firm/method">
         <OUTPUT1>string1</OUTPUT1>
         <OUTPUT2>string2</OUTPUT2>
         <OUTPUT3>string3</OUTPUT3>
      </WebServiceOutput>
   </soap:Body>
</soap:Envelope>

我也转储$som,但不包含上述结果。我正在等待查看字词string1string2,但它不存在

我该如何处理结果?

1 个答案:

答案 0 :(得分:1)

我有来自同一客户的其他网络服务,该网站服务成功运作。所以我与它进行了比较,发现了一个引起问题的小差异。

我的wsdl地址是:http://xxx.xx.xx.xx:8080/orawsv/company/method?wsdl

我打电话如下,代理值包括&#34; wsdl&#34;。当我从代理值中删除它时,我可以使用代码$ som-&gt; result。

获得结果
my $soap = SOAP::Lite
    -> on_action( sub { join '/', @_ } )
    -> readable(1)
    -> uri($uri)
    -> proxy("http://xxx.xx.xx.xx:8080/orawsv/company/method?wsdl")
    -> ns("http://schemas.xmlsoap.org/soap/envelope/","soapenv");

但我无法理解为什么需要删除&#34;?wsdl&#34;从代理值中标记,因为我总是在以前的作品中添加它。