Wordpress, Windows Live Writer et son Invalid response document returned from XmlRpc server

Mardi 2 février 2010

Cela fait plus d’une dizaine de jours que je suis privé de mon Windows Live Writer pour composer mes posts de blog. Cela devient très problématique pour le confort d’utilisation qu’apporte WLW surtout en ce qui concerne la gestion des images entre autre…

En cause, une erreur levée par WLW m’indiquant :

An error occurred while attempting to connect to your blog:

Invalid Server Response – The reponse to the blogger.getUsersBlogs method received from the blog server was invalid:

Invalid response document returned from XmlRpc server

You must correct this error before proceeding.

Pour information, mon blog (un Wordpress actuellement en version 2.9.1) est hébergé sur un Windows 2003 avec donc un IIS6, le module de FastCGI avec un PHP 4.4.6, le tout derrière un reverse proxy Apache 2. Vous retrouverez déjà sur Internet plusieurs article à ce sujet, mais aucun n’a résolu mon problème. (http://codex.wordpress.org/Windows_Live_Writer_Help).

Après avoir éliminé le cas d’une erreur coté client (mon WLW marche bien avec d’autre blog) et d’une erreur de mon environnement Win/IIS par le fait qu’un autre blog Wordpress 2.9.1 sur ce même serveur fonctionne très bien avec WLW, je me suis intéressé à la différence dans les échanges HTTP entre le blog qui fonctionne et mon blog qui ne fonctionne pas avec WLW.

Pour cela je me suis servi de Fiddler pour filtrer les échanges HTTP de WLW avec les blogs en question. Voici le début du process d’ajout d’un compte dans WLW :

  1. Téléchargement de la page d’accueil du blog pour récupérer l’URL du “EditURI”
  2. GET sur le /xmlrpc.php?rsd pour récupérer l’URL de l’API (qui doit être /xmlrpc.php)
  3. POST sur le /xmlrpc.php
  4. ….

Seulement l’erreur de WLW est lévée à l’étape 3. D’ailleurs Fiddler nous indique une violation du protocole HTTP :

Fiddler has detected a protocol violation in session #51. Content-Length mismatch: Response Header claimed 647 bytes, but server sent 650 bytes.

image

Il y a en effet 3 octets en plus dans le contenu de la réponse que dans ce qui est déclaré dans le header HTTP. En regardant le plus près, ces trois octets sont présents juste au début du contenu de la réponse HTTP et juste après le header : EF BB BF !

image

Suivant Wikipédia : “La représentation UTF-8 du BOM est la séquence d’octets EF BB BF, qui apparaît en codage ISO-8859-1 comme ""”.

On peut facilement reproduire ce comportement en créant deux pages PHP faisant un simple echo. Sur une des pages on enregistre en “ANSI” et sur l’autre en “UTF8”. En appelant ces deux pages, on constatera avec Fiddler que le fameux “EF BB BF” est ajouté sur la page encodée en UTF-8.

Sachant cela, je me suis intéressé à la possibilité qu’un fichier PHP inclut dans ma réponse était encodé en UTF8. Et cela était le cas mais à un endroit où on l’attend pas : dans mon thème Wordpress.

Ainsi si vous avez cette erreur, vérifiez tous vos plugins et surtout votre thème. Désactivez tout, il y a de très grandes chances que cela provient d’un fichier ayant un mauvais encodage. Vous éviterez de perdre de longues heures pour tenter de comprendre ce problème :)

Et si on s’y remettait ?

Dimanche 10 février 2008

Et oui, huit (longs) mois que je n’ ai pas bloggé et vous avez été nombreux à me le rappeler ;) Mais pourquoi ? Manque d’ inspiration ? Manque de temps ?  Un peu des deux même si j’ étais étonné de voir tant d’ articles dans mes brouillons sur Exchange 2007, la virtualisation VirtualServer et Hyper-V, le reverse proxy apache/isa mais je parle bien entendu de brouillons et n’ ai jamais trouvé le temps de les publier !

Je dirais donc que c’ est un « manque de temps » ! Mais alors quoi de neuf depuis ? Beaucoup de « première fois ». En effet, cet été fut pour moi ma première expérience dans la traduction avec un ouvrage sur WCF (Windows Communication Foundation) aux éditions O’Reilly ! 

wcf-oreillyCette introduction à WCF (Microsoft Windows Communication Foundation) est idéale pour les développeurs qui veulent apprendre à déployer des applications orientées services.

Intégré à Windows Vista et Longhorn, de même que disponible pour Windows XP et Windows 2003, WCF propose une plateforme pour les SOA, les architectures orientées services, qui assurent des communications dignes de confiance entre les différents systèmes au sein d’une société ou via Internet.

Plus d’info sur : http://www.oreilly.fr/catalogue/284177449X

Après la traduction, j’ ai eu le droit à ma première publication dans le magazine Programmez! avec un article sur Microsoft Sync Framework co-ecrit avec Gregory Renard (Redo):

programme-sync En novembre dernier, Microsoft annonçait la disponibilité d’un nouveau framework de développement ainsi que d’un  » runtime  » baptisé  » Sync Framework  » (MSF), afin de simplifier le développement de solutions de synchronisation, de roaming et d’applications online ayant la capacité intuitive de fonctionner en mode hors ligne.

Ce nouveau Framework vous permettra de développer des scénarios de peer-topeer, de synchronisation entre tous types de terminaux et services ainsi que le fonctionnement avec des systèmes hétérogènes comme sur les types de Bases de Données, protocoles ou stockages en tout genre

Le Sync Framework, disponible sur le site de Microsoft MSDN, se télécharge en quelques minutes et s’installe très aisément

Pour rester dans les premières fois, demain, je donnerai dans les cadres des TechDays 2008 ma première session avec un sujet qui me tient à coeur : « IIS7 pour les développeurs » (le mélange de l’IT et du développeur :) ).

 logo

Mais en huit mois, ce blog a raté beaucoup de chose, il y a eu bien sûr la sortie du .NET 3.5, de Visual Studio 2008 et plus récent de Windows Server 2008 ! Enfin ce post pour dire d’ une part que je suis toujours là et que je vais bien pour certain (private joke) et d’ autre part que je vais doucement mais surement reprendre place sur mon petit bout de toile :)

En espérant que je tienne promesse (:p), je vous dis A très bientôt

Sebastien.warin.fr : Nouveau blog, nouvelle adresse :)

Dimanche 17 juin 2007

Ah enfin !! Mon 1er article sur Windows Live Writer :) En effet, cela faisait quelque temps que je cherchais à migrer mon ancienne plateforme de blog sous DotClear vers quelque chose de nouveau, de plus complet, me permettant entre autre d’utiliser le XMLRPC.

Après avoir fait le tour des plateformes de blog, mon choix s’est porté (avec l’évangélisme de mon cher AmO) vers WordPress pour sa puissance et communauté. Etrange pour un pro-Microsoft ? A mon grand désespoir, aucune plateforme simple, puissante et libre sous .NET :(

La migration fut sans douleur, avec l’expertise de mon cher ami AmO (responsable WordPress France) que je remercie énormément, vous vous doutez bien que j’étais en bonne compagnie de l’installation/configuration au design en passant par la migration des données de DC :)

Qui dit nouveau blog, dit nouvelle adresse ! Forcement, il fallait rompre avec Sebeuh, pseudo de mes années ados ;) Le petit poucet deviendrait grand ??? Une chose est sûr, mettez a jours vos favoris, liens, feeds RSS, etc….

· Site web / Blog : http://sebastien.warin.fr

· Feed RSS : http://sebastien.warin.fr/feed/

Cette nouvelle étape passée, je vous dis à bientôt sur ce nouveau blog :)

Tech The Blog : and the winners are…

Lundi 26 février 2007

Tout est dans le titre avec la surprise de me voir gagner une Wireless Notebook Presenter Mouse 8000 pour la 4ème place :)

Début, suite et fin sur http://blogs.technet.com/mstechdays/

Merci les Tech Days ;)

Reprise du Blog :-)

Dimanche 5 février 2006

Bien longtemps que ce blog est installé mais toujours pas utilisé ! Les choses vont changer :-)

Ce blog sera online jusqu’a ce que je diffuse mon site perso en version 2.0 que je developperai au cours de l’année en ASP.NET 2.0.

En attendant donc, je me met a blogger sur ce petit blog (powered by DotClear) non pas pour vous raconter ma life (quoi que…) mais surtout pour parler informatique :-)

J’espere que ce vous plaira, et quelques petits liens pour la route :

A bientot pour un prochain post ^^