2014-01-22 24 views
0

我對SOAP和XML :: Compile很陌生,大多數例子都可以通過SOAP調用結束,而沒有太多解釋如何處理響應。XML :: Compile :: SOAP - 將響應轉換爲哈希值

有沒有簡單的方法將SOAP響應轉換爲散列?

這裏是我的代碼

....

my ($response, $trace) = $call->($request); 
my $content=$trace->response->decoded_content(); 
my $out=XML::Hash->new()->fromXMLStringtoHash($content) 

,但我發現了以下錯誤:

第4行的文檔元素,列0,字節11177後垃圾/ usr/lib/perl5

看看服務器返回的內容:

<肥皂:信封.....

BA8

... </SOAP:信封>

我不知道的 'BA8' 怎麼弄進入響應,因爲一旦你刪除它看起來像一個完整和有效的響應。

回答

0

SOAP響應應該是一個散列。 trace是一個可以讓你獲得HTTP請求和/或響應的對象,但除了調試之外,你不需要去查看。

use Data::Dumper; 

... 
print Dumper $response; 
+0

$ response返回空 - 可能是因爲soap響應不是一個完整的XML - 我一直在看ba8或1ff8是否切斷跟蹤中的正確響應 - 是否存在響應的某種編碼問題因爲這些線路應該在那裏沒有理由。 – user2607648

+0

也看着HHTP響應的軌跡-Client-Transfer-Encoding:chunked它告訴我這是編碼問題,因爲所有奇怪的線都以恆定的頻率來到 – user2607648

0

原來,問題是在淨已知的bug :: HTTP - 之後我LWP :: UserAgent的沿着它升級到最新版本的一切工作現在罰款[以防萬一] 。