stampa questo articolo
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

Potrebbe interessarti anche ...

4 Commenti

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

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

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here