Ошибка ответа XMLRPC

Я пытаюсь использовать Apache XMLRPC для управления сообщениями в небольшом сервисе блогов. Поддержка там не очень хорошая, и они не могут помочь. Они говорят, что веб-блог поддерживает API metaweblog.

Я пытаюсь получить все свои сообщения, используя rpc "metaWeblog.getPost":

token = client.invoke("metaWeblog.getPost", new Object[] {123, // also tried "123" and "\"123\""
                                                          "username", 
                                                          "password"});

Когда я использую 123 (без кавычек), я получаю следующий ответ: java.lang.Exception: java.lang.Integer не может быть приведен к java.lang.String.

Когда я использую "123" или "\"123\"" (кавычки), я получаю такой ответ: java.lang.Exception: Неверный формат postid: 123

Этот код работает с моим блогом Wordpress.

1 ответ

Решение

Wordpress, вероятно, работает, потому что он написан на PHP и не так чувствителен к типу, как Java.

Документы для metaWeblog говорят, что необработанное XML-представление запроса выглядит так:

<?xml version="1.0"?>

<methodCall>

    <methodName>metaWeblog.getPost</methodName>

    <params>

        <param>

            <value><i4>1829</i4></value>

            </param>

        <param>

            <value>Bull Mancuso</value>

            </param>

        <param>

            <value><base64>bm93YXk=</base64></value>

            </param>

        </params>

    </methodCall>

Так что вам нужно попытаться установить параметры как переменные правильного типа

PostId должен быть 32 большим целым числом, пароль закодирован в base64, имя пользователя является строкой.

Объявите ваши переменные правильно и передайте переменные, а не константы в кавычках, в метод invoke.

Затем xml, сформированный под капотом библиотеки rpc, убедится, что <i4></i4> вокруг идентификатора поста и т. д.

Надеюсь, это немного поможет. По крайней мере, вы можете доказать, что другая сторона неправильно реализует metaWeblog. В лучшем случае вы решили свою проблему и можете двигаться дальше.

Другие вопросы по тегам