2015-12-11 106 views
1

我正在調用Web服務,客戶驗證呼叫是否成功,這意味着我的數據成功地到達了他們的服務器。但不幸的是,我無法讀取輸出。 這是我第一次遇到。我與SOAP Web服務工作了很多年。處理Perl SOAP Web服務結果

我調用Web服務,如下這是很常見

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

我試圖得到結果如下,但它沒有工作

my $result = $som->result; 

我可以看到導致當我打電話網通過使用SOAPUI服務:

<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但它不在包括以上結果。我期待看到string1,string2,但它不存在

我該如何處理結果?

+1

你實際得到的結果是什麼?然後警告,看看是否有任何東西彈出。 – darch

+1

您的問題沒有足夠的答案。請參閱[問]什麼是一個很好的問題。至少[mcve]是有用的。 – Sobrique

+1

這可能不會有太大的幫助,但我被告知現在人們更喜歡[XML :: Compile](https://metacpan.org/pod/XML::Compile)over SOAP :: Lite。我,我只是避免使用SOAP: -/ –

回答

1

我有另一個來自同一個客戶的web服務,它工作成功。所以我與它相比,發現了一個小問題。

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

我打電話如下,代理值包括 「WSDL」。當我從代理值中刪除它時,我可以得到代碼$ som-> 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"); 

但我不明白爲什麼有人需要去除代理值「?WSDL」的標籤,因爲我總是在我以前的作品添加。