У меня возникла странная проблема с XML-RPC.PHP код возврата/ошибки сервера XML-RPC не отображается в клиенте Perl XML-RPC
Мне нужно использовать существующий коммерческий API XML-RPC, написанный на PHP (крайне плохо, я должен добавить, с ужасной документацией), из сценария Perl. Я попытался все XML-RPC модули Perl я мог найти (Frontier::Client
, XML::RPC
, RPC::XML
), но в целом это происходит:
Когда мой вызов успешен, я получаю результат, ничего плохого.
Когда это не так (по какой-либо причине - неудачная аутентификация, отсутствующие/неправильные параметры), я ничего не получаю. Пустой ответ (при использовании Frontier :: Client, он говорит 500 Internal Server Error) без кода ошибки/сообщения.
Но когда я использую тестовый файл PHP, поставщик отправил мне коммерческий API, используя те же методы и параметры, я получаю код ответа и ответное сообщение (редко полезно, но тем не менее).
Что может быть объяснением этого? Библиотека, которую они используют на стороне сервера, выводит ошибки каким-то странным образом? (Примечание: я думаю, что они используют xmlrpc-2.2.2, по крайней мере, это то, что используется на стороне клиента в тестовом PHP-файле). Это пример ответа XML с ошибкой, которую я получаю от клиента PHP.
<?xml version="1.0" ?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>demande</name>
<value>
<struct>
<member>
<name>0</name>
<value>
<struct>
<member>
<name>codeReponse</name>
<value>
<int>-28</int>
</value>
</member>
<member>
<name>messageReponse</name>
<value>
<string>Verifiez l'adresse email de validation</string>
</value>
</member>
</struct>
</value>
</member>
</struct>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
Это по-французски, но вы получите суть. Почему это правильно отображается в PHP, но не в моем скрипте Perl, какую бы библиотеку я не использовал? И есть ли способ исправить это, не сообщив поставщику API правильно переписать свой код?
Нам нужно будет увидеть какой-нибудь код, чтобы иметь возможность ответить, я думаю. – Sobrique
Можете ли вы получить необработанный XML из API? – Sobrique
Как я пытался указать, код не имеет значения. У меня нет доступа к коду API, а мой - не что иное, как простые методы вызова (из трех разных модулей). Что касается тестового PHP-скрипта, он также содержит простейшее возможное объявление клиента, привязку параметров и вызов. Выходной XML из обоих сценариев почти идентичен (несколько символов новой строки больше в PHP-сгенерированном XML, но я действительно не думаю, что это важно) –