Ответ об ошибке XMLRPC
-
12-12-2019 - |
Вопрос
Я пытаюсь использовать Апач XMLRPC для управления публикациями в небольшом сервисе блогов.Поддержка там не очень хорошая, и они ничем не могут помочь.Они говорят, что блог поддерживает метавеблог API.
Я пытаюсь получить все свои сообщения с помощью RPC "metaWeblog.getPost":
token = client.invoke("metaWeblog.getPost", new Object[] {123, // also tried "123" and "\"123\""
"username",
"password"});
Когда я использую 123 (без кавычек), я получаю такой ответ: java.lang.Исключение:java.lang.Integer нельзя привести к java.lang.String
Когда я использую «123» или «123» (кавычки), я получаю такой ответ: java.lang.Исключение:Неверный формат почтового идентификатора:123
Этот код работает с моим блогом Wordpress.
Решение
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, имя пользователя — строка.
Объявляйте переменные правильно и передавайте переменные, а не константы в кавычках, в метод вызова.
Затем XML, который формируется библиотекой RPC, будет гарантировать, что <i4></i4>
вокруг идентификатора сообщения и т. д.
Надеюсь, это немного поможет.По крайней мере, вы можете доказать, что другая сторона неправильно реализует метавеблог.В лучшем случае вы решили свою проблему и можете продолжать двигаться дальше.