Я пишу скрипт в Perl для использования двух API XML-RPC. С одним из них он работает отлично, а другой я всегда получаю пустой результат. После обращения к поставщику второго API они прислали мне сценарий образца PHP для работы с API. Я не мог найти какое-либо различия в настройке, так что после некоторого debbuging я обнаружил, что XML послал отличается несколько \ нс: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>
Единственное различие между ними я вижу несколько новой строки. Я отправил POST-запросы с завихрением с двумя XML-файлами, а в случае № 1 я не получил результата, в случае №2 он работает. Очевидно, что реализация второго API (написанная на PHP btw) более претенциозна (напоминание - в API # 1 она работает с первым XML, API # 2 - без результата).
Что я могу сделать, помимо создания самого XML, для решения этой проблемы? Есть ли способ рассказать любой из существующих библиотек Perl XML-RPC для форматирования XML таким образом, чтобы серверу это понравилось?
Wow, я имел полностью пропустил это! Спасибо, вот и все, теперь это работает. –
Хорошо - я действительно надеюсь, что переводы строк не сломают XML, потому что, если это так, это не XML. – Sobrique
@Sobrique: Это неправда. Решать, как обрабатывать пробельный текст в XML-документах, зависит от приложения. Парсеры XML обязаны передавать все текстовые элементы пробелов – Borodin