Home tech Windows Live Writer e wordpress, quando l’xmlrpc smette di funzionare!

Windows Live Writer e wordpress, quando l’xmlrpc smette di funzionare!

12 min di lettura
4
0
176

Negli ultimi periodi non riuscivo più a far funzionare “Windows Live Writer” con questo blog su piattaforma “wordpress”, l’errore era sempre lo stesso:

La risposta al metodo metaWeblog.newPost ricevuta dal server del blog non era valida:

Invalid response document returned from XmlRpc server

Questa l’iconcina magica che appariva:

Image1

La cosa interessante è che l’articolo veniva comunque scritto, quindi (mi son detto) il problema è nella risposta che il server ritorna a WLW.

Come al solito “girettando” per la rete ho letto e visto una serie infinita di risposte al quesito ma, haimè, nessuna di queste si è dimostrata definitiva e risolutiva.

C’è chi consiglia di disinstallare il plugin “ Google XmlSiteMap Generator”, poi chi notifica a Google che ho fatoo un’articolo?

Chi di lasciar stare WLW perchè fa schifo, ma a me piace!!!

Alla fine sono arrivato su un sito che mi ha “illuminato”, questo l’articolo, molto interessante e che soprattutto sembrava fatto su misura per il mio problema.

In sostanza Peter Van Eeckhoutte ci dice che dobbiamo innanzitutto andare ad analizzare il log di WLW, cliccando su “?” – “Informazioni su Windows Live Writer” – “Modifica File registro”

In questo modo si apre la cartella del Log di WLW, nel mio PC è il file è il seguente: Windows Live Writer.log

Ora andiamo a vedere l’errore scritto nel file di log:

WindowsLiveWriter,242492,None,00013,19-Nov-2009 16:59:56.962,”Exception parsing XML-RPC response:
WindowsLive.Writer.CoreServices.XmlRpcClientInvalidResponseException: Invalid response document returned from XmlRpc server —> System.Xml.XmlException: Fine file imprevista durante l’analisi di Name. Riga 10, posizione 8.
   in System.Xml.XmlTextReaderImpl.Throw(Exception e)
   in System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
   in System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String arg)
   in System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos)
   in System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
   in System.Xml.XmlTextReaderImpl.ParseEndElement()
   in System.Xml.XmlTextReaderImpl.ParseElementContent()
   in System.Xml.XmlTextReaderImpl.Read()
   in System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
   in System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   in System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   in System.Xml.XmlDocument.Load(XmlReader reader)
   in System.Xml.XmlDocument.LoadXml(String xml)
   in WindowsLive.Writer.CoreServices.XmlRpcMethodResponse..ctor(String responseText)
   — Fine dell’analisi dello stack dell’eccezione interna —
   in WindowsLive.Writer.CoreServices.XmlRpcMethodResponse..ctor(String responseText)
   in WindowsLive.Writer.CoreServices.XmlRpcClient.CallMethod(String methodName, XmlRpcValue[] parameters)
<?xml version=””1.0″”?>
<methodResponse>
  <params>
    <param>
      <value>
        <string>821</string>
      </value>
    </param>
  </params>
</metho”,””
WindowsLiveWriter,242492,Fail,00014,19-Nov-2009 16:59:57.009,”WindowsLive.Writer.Extensibility.BlogClient.BlogClientInvalidServerResponseException: Risposta del server non valida – La risposta al metodo metaWeblog.newPost ricevuta dal server del blog non era valida:
Invalid response document returned from XmlRpc server
   in WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.CallMethod(String methodName, XmlRpcValue[] parameters)
   in WindowsLive.Writer.BlogClient.Clients.MetaweblogClient.MetaweblogNewPost(String blogId, BlogPost post, Boolean publish)
   in WindowsLive.Writer.BlogClient.Clients.MetaweblogClient.NewPost(String blogId, BlogPost post, INewCategoryContext newCategoryContext, Boolean publish)
   in WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.NewPost(String blogId, BlogPost post, INewCategoryContext newCategoryContext, Boolean publish, String& etag, XmlDocument& remotePost)
   in WindowsLive.Writer.BlogClient.Blog.NewPost(BlogPost post, INewCategoryContext newCategoryContext, Boolean publish)
   in WindowsLive.Writer.PostEditor.UpdateWeblogAsyncOperation.DoWork()
   in WindowsLive.Writer.CoreServices.AsyncOperation.InternalStart()”,”   in System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   in System.Environment.get_StackTrace()
   in WindowsLive.Writer.CoreServices.Diagnostics.LogFileTraceListener.Fail(String message)
   in System.Diagnostics.TraceInternal.Fail(String message)
   in System.Diagnostics.Trace.Fail(String message)
   in WindowsLive.Writer.PostEditor.BlogPostEditingManager.UpdateWeblog(Boolean publish)
   in WindowsLive.Writer.PostEditor.BlogPostEditingManager.PostToWeblog(Boolean publish)
   in WindowsLive.Writer.PostEditor.BlogPostEditingManager.Publish()
   in WindowsLive.Writer.PostEditor.PostEditorMainControl.commandPostAndPublish_Execute(Object sender, EventArgs e)
   in WindowsLive.Writer.ApplicationFramework.Command.RaiseEvent(Object eventKey, EventArgs e)
   in WindowsLive.Writer.ApplicationFramework.Command.OnExecute(EventArgs e)
   in WindowsLive.Writer.ApplicationFramework.CommandBarButtonLightweightControl.OnMouseUp(MouseEventArgs e)
   in WindowsLive.Writer.Controls.LightweightControl.RaiseMouseUp(MouseEventArgs e)
   in WindowsLive.Writer.Controls.LightweightControlContainerControl.OnMouseUp(MouseEventArgs e)
   in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   in System.Windows.Forms.Control.WndProc(Message& m)
   in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   in System.Windows.Forms.ContainerControl.WndProc(Message& m)
   in System.Windows.Forms.UserControl.WndProc(Message& m)
   in WindowsLive.Writer.Controls.LightweightControlContainerControl.WndProc(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   in System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   in System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
   in System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   in System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   in System.Windows.Forms.Application.Run(Form mainForm)
   in WindowsLive.Writer.ApplicationFramework.SatelliteApplicationForm.Launcher.ThreadMain(Object[] parameters)
   in WindowsLive.Writer.CoreServices.Threading.ThreadStartWithParams.Run()
   in System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   in System.Threading.ThreadHelper.ThreadStart()”
WindowsLiveWriter,242492,None,00015,19-Nov-2009 16:59:57.009,”DisplayableException occurred: WindowsLive.Writer.Extensibility.BlogClient.BlogClientInvalidServerResponseException: Risposta del server non valida – La risposta al metodo metaWeblog.newPost ricevuta dal server del blog non era valida:
Invalid response document returned from XmlRpc server
   in WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.CallMethod(String methodName, XmlRpcValue[] parameters)
   in WindowsLive.Writer.BlogClient.Clients.MetaweblogClient.MetaweblogNewPost(String blogId, BlogPost post, Boolean publish)
   in WindowsLive.Writer.BlogClient.Clients.MetaweblogClient.NewPost(String blogId, BlogPost post, INewCategoryContext newCategoryContext, Boolean publish)
   in WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.NewPost(String blogId, BlogPost post, INewCategoryContext newCategoryContext, Boolean publish, String& etag, XmlDocument& remotePost)
   in WindowsLive.Writer.BlogClient.Blog.NewPost(BlogPost post, INewCategoryContext newCategoryContext, Boolean publish)
   in WindowsLive.Writer.PostEditor.UpdateWeblogAsyncOperation.DoWork()
   in WindowsLive.Writer.CoreServices.AsyncOperation.InternalStart()”,””

 

Dovreste avere un file simile a questo, se è cosi allora andate a vedere la riga che ho ingrandito relativa all’xml di risposta ossia:

</metho”,””

L’errore è qui!!!! Come si vede la stringa è troncata, manca la parte finale ossia “dResponse>

Perchè questo?

Anche il buon Peter ci dice che non sa di preciso perchè accada ciò:

“This is caused because something (a plugin ? my webserver (IIS) ? something else ?) decided to add UTF-8 BOM to the XML-RPC response. Result : the xml response is 3 bytes longer than expected, which causes the xml response to be truncated.”

Però, cosa assai più interessante, ci da la soluzione al problema!

Ci dice quindi di andare a cercare ed editare il file:

wp-includes/class-IXR.php

ossia la classe deputata alla gestione del protocollo xmlrpc sotto wordpress.

Cerchiamo poi la funzione:

function output($xml)

e nella funzione cerchiamo la riga:

$length = strlen($xml);

Peter ci dice poi di sostituirla con la stringa

$length = strlen($xml)+3;

L’ho fatto però ho subito verificato che l’off-set “+3”, nel mio caso, non era sufficiente, infatti l’errore rimaneva e mi ritornava:

</methodR”,””

cosi ho sostituito con:

$length = strlen($xml)+10;

In questo modo WLW ha ripreso a funzionare alla grande.

Etrusco

Ti è piaciuto il mio articolo?

Ricevi tutte le novità dell'etrusco direttamente nella tua casella di posta

Non preoccuparti, non faccio spam!

è Solution Architect e Full Stack Developer specializzato nell’analisi, progettazione e realizzazione di sistemi complessi in ambito Transportation. Dal 2007 è anche blogger con il nickname "etrusco" che ha associato alla sua brand identity; cura personalmente i contenuti di molti altri blog, website e forum. Ha inoltre realizzato molte webapp e siti di ecommerce. La passione per internet, per i nuovi media e per la tecnologia in generale gli permettono di stare sempre al passo con i nuovi linguaggi e le più innovative metodologie di programmazione. Adora sua moglie, le sue due figlie, la fotografia analogica e questo blog.

Carica più articoli correlati
Carica più per Alessandro De Marchi
Carica più in tech

4 Commenti

  1. Gianfranco Goria - afnews.info

    3 settembre 2010 a 13:05

    Grazie! 🙂

  2. etrusco

    3 settembre 2010 a 15:18

    prego 🙂

  3. F1News

    28 luglio 2013 a 18:30

    Incredibile! Il trucco funziona, oggi il mio blog non ne vuole sapere di funzionare, credo ci siano problemi in aruba, sono diverse cose che non caricano bene, ma Il live Writer l’ho risolto cosi. Grazie

  4. F1News

    28 luglio 2013 a 18:34

    Devo commentare ancora perchè il Live funge, ma il blog dà errore avvisandomi che wordpress è già installato. Peccato..

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Guarda anche

idee regalo da donna: le migliori occasioni per un natale senza pensieri

Idee regalo da donna: le migliori occasioni per un natale senza pensieri Il Natale si sta …