Ошибка ответа 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. В лучшем случае вы решили свою проблему и можете двигаться дальше.