我正在寫一個腳本,在Perl中使用兩個XML-RPC的API。他們中的一個工作正常,另一個我總是得到一個空的結果。 與第二個API的供應商聯繫後,他們向我發送了一個PHP示例腳本,以便與API一起運行。我無法找到設置的任何差異,因此一些debbuging後,我發現XML由幾個\ NS發送不同:Perl的XML-RPC輸出格式/模式
<?xml version="1.0"?>
<methodCall>
<methodName>solde</methodName>
<params>
<param><value><struct>
<member><name>utilisateur</name><value><string>user</string></value></member>
<member><name>motDePasse</name><value><string>pass</string></value></member>
</struct></value>
</param>
</params>
</methodCall>
這是由Perl腳本(我已經嘗試過XML發送: :RPC,Frontier :: Client,RPC :: XML - 無論如何都沒有運氣)。 PHP腳本(的作品之一)發送這個:
<?xml version="1.0"?>
<methodCall>
<methodName>solde</methodName>
<params>
<param>
<value><struct>
<member><name>identification</name>
<value><struct>
<member><name>utilisateur</name>
<value><string>user</string></value>
</member>
<member><name>motdePasse</name>
<value><string>pass</string></value>
</member>
</struct></value>
</member>
</struct></value>
</param>
</params>
</methodCall>
兩個我看到的唯一區別是幾個換行符。我已經用這兩個XML發送了帶有curl的POST請求,並且在#1的情況下,我沒有得到任何結果,如果它#2有效。 顯然,第二API(寫在PHP的BTW)的實施更自命不凡(提醒 - 在API#1它與第一個XML,API#2 - 無結果)。
我能做些什麼,除了生成XML自己,來解決這個問題?有沒有辦法告訴任何一個現有的Perl XML-RPC庫來格式化XML,服務器會喜歡它?
哇,我有完全錯過了!謝謝,就是這樣,現在它起作用了。 –
好 - 我真的希望換行沒有打破XML,因爲如果它沒有,它不是XML。 – Sobrique
@Sobrique:事實並非如此。這取決於應用程序決定如何處理XML文檔中的空白文本。 XML解析器有義務傳遞所有空白文本元素 – Borodin