2012-05-04 48 views
1

我在嘗試處理SOAP錯誤時遇到了問題,我無法弄清楚它是否在我的末端或另一端。XML ::編譯:: 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); 

如果我打電話,利用正確的PARAMS然後一切正常,你會想,如果$響應具有哈希REF結果我在找。

但是,如果我導致錯誤,那麼我什麼都不會回來。 $響應沒有任何內容(每個Data :: Dumper)。

事情是,$ trace是否有肥皂信封在那裏。肥皂信封在成功和失敗/故障中都有$追蹤,但只有在成功時纔會有$響應中的某些信息,失敗時信封中的「faultType」和「faultData」應該位於$響應中。

我做錯了什麼?從我讀過的所有內容來看,這聽起來像我不應該做任何不同的事情,在出現故障的情況下,我們應該有類似$ response - > {'fault'}的東西,但就像我說的那樣,$ response是空的。

任何想法,我應該尋找什麼?

TIA!

回答

0

對於你的問題,可能不是一個真正的答案,但我現在還不能發佈評論,所以這裏有一個想法:嘗試使用soapUI(它們有一個免費版本,足以滿足你的目標)或類似的軟件和測試你的SOAP服務,以確保問題出現在你的代碼中,而不是SOAP服務端。

+0

謝謝,這是一個非常酷的程序。它似乎看到了錯誤,所以我不知道XML :: Compile發生了什麼 – Analog