Question

Je développe un site Web qui, entre autres, fournit les blogs via l'API Metaweblog. Je suis devenu l'API fonctionne très bien avec plusieurs clients de blog, mais Windows Live Writer me tue.

Je l'ai fait une trace de réseau pour capturer le trafic réel back-et-vient. Voici les résultats:

WLW demande l'URL de mon blog, nom d'utilisateur et mot de passe. L'URL est / item / liste / Type / blog / utilisateur / 1 / BlogUser / 1, et je fournir.

Je vois WLW faire une requête HTTP pour cette URL. Il obtient une réponse. Cette réponse inclut à la fois la DSR et wlwmanifest balises de liens.

La prochaine demande de WLW est de / mwapi / RSD / BlogUser / 1, qui est l'URL correcte.

La réponse est la réponse 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>

La prochaine demande de WLW est de / mwapi / index. Ceci est l'appel de méthode pour blogger.getUsersBlogs. La demande est:

.<?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>

Pardonne les périodes; ce sont des retours chariot. Je suis preneuse ce à partir d'une trace réseau.

La réponse du serveur est également en 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>.

Cela semble correct pour moi. Le blogid est correct, l'URL est correcte, et le nom du blog est correct.

WLW répète ensuite l'appel de méthode de getUsersBlogs d'origine. Il obtient une réponse identique.

WLW puis affiche, « Une connexion réussie a été apportée à votre compte mais le serveur a signalé que vous n'avez pas actuellement un blog actif. S'il vous plaît assurez-vous que votre compte avec ce fournisseur est en cours avant de poursuivre. »

WLW a pas d'autres requêtes HTTP au-delà de ceux que je viens de décrire.

Tous les indices que ce soit ce que je fais mal? Je l'ai fait en sorte qu'un fichier wlwmanifest.xml est disponible, et en fait tout demande de wlwmanifest.xml (par exemple, /this/is/not/it/wlwmanifest.xml) retournera toujours le bon fichier.

EDIT: Je réalisais que je ne rentrais un tableau de ma méthode getUsersBlogs. Quand j'ai changé que la réponse HTTP de l'appel de la méthode est:

.<?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>.

Cela semble identique à ce qui est décrit à la http://msdn.microsoft. com / fr-fr / bibliothèque / aa905665.aspx comme exemple de réponse. Mais, WLW affiche une erreur - « référence d'objet non définie à une instance d'un objet. » Encore une fois, les données de réponse réelle ne comprend pas les périodes -. Qui est juste comment Moniteur réseau représente un retour chariot

Je l'ai fait des appels de test à partir d'un faisceau d'essai et il fonctionne très bien avec des réponses identiques. Et, comme je l'ai dit, il travaille avec d'autres clients blogging. Aide.

Était-ce utile?

La solution

WLW, il semble, est très pointilleux sur la mise en œuvre MWA. Je ne capitalise l'une des méthodes les noms correctement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top