2010-07-05 142 views
0

我有一個對Java實現的XMLRPC的調用,我已經驗證了沒有例外的情況下運行並寫入輸出。 Perl中的調用是這樣的:在Perl中使用XMLRPC :: Lite的錯誤文件描述符

my $result = XMLRPC::Lite 
    -> proxy($url) 
    -> call("someMethod", 
       SOAP::Data->type(string => $par1), 
       SOAP::Data->type(string => $par2), 
       # etc... 
     ) 
    -> result; 

但後來我檢查$結果並沒有定義,我得到錯誤的文件描述符錯誤。 會發生什麼?這是工作之前,我想不出任何重大的可能已經改變...

+0

您的網址是否有效? 「$ par1」和「$ par2」是否按預期定義? – Zaid 2010-07-05 14:54:01

+0

是的,實際的XMLRPC正在成功執行。我已經在應用程序中放置了日誌,並且我確切知道POST處理程序(servlet doPost())正常結束。所以可以排除URL和參數問題。 – 2010-07-05 15:09:20

回答

0

好吧,我發現它,雖然我不明白爲什麼發生。 的XMLRPC應用程序做到這一點:

byte[] result = xServer.execute(request.getInputStream()); 

getLogger().log(new String(result)); 

response.setContentType("text/xml"); 
response.setContentLength(result.length); 
OutputStream out = response.getOutputStream(); 
out.write(result); 
out.flush(); 

getLogger().log("finished doPost"); 

我日誌發送到輸出,所以我應該得到它的Perl腳本的$結果變量的結果。結果是通過Jdom庫生成的XML。 雖然我得到了錯誤,但得到的記錄是一個XML,它包含一個錯誤消息,指示Jdom出現問題(基本上,該應用程序未完全重新編譯爲該庫的該版本)。

現在,它的工作原理是,預期的XML被記錄併成功地分配給Perl中的$ result。

但是,由於在這兩種情況下字節數組都是XML,所以我不太瞭解它對調用者有什麼影響。它甚至不在尋找給定的XML結構,這個調用導致了一個錯誤。

任何有關這方面的見解將不勝感激。但問題解決了。