Почему Windows Live Writer работает с моим провайдером API MetaWeblog?

StackOverflow https://stackoverflow.com/questions/1786156

  •  21-09-2019
  •  | 
  •  

Вопрос

Я разрабатываю веб -сайт, который, помимо прочего, предоставляет блог с помощью API MetaWeblog. У меня все хорошо работало с несколькими клиентами блога, но Windows Live Writer убивает меня.

Я сделал сетевой трассировку, чтобы захватить фактический трафик. Вот результаты:

WLW просит мой URL -адрес моего блога, имя пользователя и пароль. URL IS/item/list/type/blog/user/1/bloguser/1, и я предоставляю это.

Я вижу, что WLW делает HTTP -запрос на этот URL. Это получает ответ. Этот ответ включает в себя как RSD, так и теги ссылки Wlwmanifest.

Следующий запрос от WLW предназначен для/mwapi/rsd/bloguser/1, который является правильным URL.

Ответ является ответом MetaWeblog RSD:

<?xml version="1.0" encoding="UTF-8"?>
<rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
<service>
<engineName>Cahoots2</engineName>   
<engineLink>http://sourceforge.net/projects/cahoots/</engineLink>  
<homePageLink>http://10.0.1.39:8888</homePageLink>
<apis>
  <api name="MetaWeblog" blogID="1" preferred="true" apiLink="http://10.0.1.39:8888/mwapi/index" />
 </apis>
</service>
</rsd>

Следующий запрос от WLW - /mwapi /index. Это метод вызова Blogger.getUsersblogs. Запрос:

.<?xml version="1.0" encoding="utf-8"?>..
<methodCall>.. <methodName>blogger.getUsersBlogs</methodName>.. 
<params>..  <param>..   <value>..
<string>ffffffabffffffce6dffffff93ffffffac29ffffffc9fffffff826ffffffdeffffffc9ffffffe43c0b763036ffffffa0fffffff3ffffffa963377716</string>..
</value>..
</param>..
<param>..
<value>..
<string>CommunityAdmin</string>..
</value>..
</param>..
<param>..
<value>..
<string>password</string>..
</value>..
</param>.. </params>..</methodCall>

Простите периоды; Это возврат перевозки. Я захватываю это с сетевого следа.

Ответ с сервера также в XML:

.<?xml version="1.0" encoding="UTF-8"?>.<methodResponse><params><param><value>
<struct><member><name>blogid</name><value><int>1</int>
</value></member><member><name>url</name><value>
<string>http://10.0.1.39:8888/item/list/type/blog/user/1/bloguser/1</string>
</value></member><member><name>blogname</name><value>
<string>CommunityAdmin @ Cahoots!</string></value></member></struct></value>
</param></params></methodResponse>.

Это выглядит правильно для меня. BlogID верен, URL верен, и имя блога верно.

Затем WLW повторяет оригинальный вызов метода GetUsersblogs. Это получает идентичный ответ.

Затем WLW отображает: «Успешное соединение было сделано с вашей учетной записью, однако сервер сообщил, что в настоящее время у вас нет активного блога. Пожалуйста, убедитесь, что ваша учетная запись с этим поставщиком актуальна перед продолжением».

WLW не сделал дальнейших HTTP -запросов, помимо тех, которые я описал здесь.

Какие -нибудь подсказки, что я делаю не так? Я гарантировал, что файл wlwmanifest.xml был доступен, и на самом деле Любые Запрос на wlwmanifest.xml (например,/this/is/not/it/wlwmanifest.xml) все равно вернет правильный файл.

РЕДАКТИРОВАТЬ: Я понял, что не возвращаю массив из моего метода Getusersblogs. Когда я изменил это, ответ HTTP из вызова метода был:

.<?xml version="1.0" encoding="UTF-8"?>.<methodResponse><params><param><value><array><data><value>
<struct><member><name>blogid</name><value><int>1</int></value></member>
<member><name>url</name><value>
<string>http://10.0.1.39:8888/item/list/type/blog/user/1/bloguser/1</string>
</value></member><member><name>blogname</name><value>
<string>CommunityAdmin @ Cahoots!</string></value></member></struct></value>
</data></array></value></param></params></methodResponse>.

Это выглядит идентично тому, что описано в http://msdn.microsoft.com/en-us/library/aa905665.aspx в качестве ответа образца. Но WLW отобразила ошибку - «Ссылка на объект не установлен на экземпляр объекта». Опять же, фактические данные ответа не включают периоды - именно так сетевой монитор представляет возврат перевозки.

Я сделал тестовые вызовы из тестового жгута, и он отлично работает с одинаковыми ответами. И, как я уже сказал, он работает с другими клиентами блогов. Помощь.

Это было полезно?

Решение

Кажется, что WLW очень разборчив в отношении реализации MWA. Я неправильно использовал одно из названий методов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top