12 月25
已解決:WLW無效的伺服器回應(Invalid response document returned from XmlRpc server)

已解決:WLW無效的伺服器回應(Invalid response document returned from XmlRpc server)

不知道怎麼回事,我放在Byethost的虛擬主機突然無法使用【Windows Live Writer 2011(WLW)】上傳及下載文章,明明前兩天還好好的,也沒做過什麼變動,可是WLW就是顯示如上畫面的訊息:【無法連接到您的部落格服務: 無效的伺服器回應 – 收到部落格伺服器對於 blogger.getUsersBlogs 方法的無效回應 Invalid response document returned from XmlRpc server】。

在網路上找了許多的英文的資料,試過更改根目錄下的xmlrpc.php檔案,嘗試修復原本的PHP 5.22臭蟲;也試過修改wp-includes/class-wp-xmlrpc-server.php程式碼,可是都徒勞無功。後來竟然在自己較早期的文章中發現了解決的方法,真是踏破鐵鞋無覓處,得來全不費工夫,害我還忙了一個晚上。

  • 使用軟體版本:
    我所使用的 Windows Live Writer 2001 及 WordPress 3.4 的版本,我發現似乎跟 WordPress 版本沒有多大的差異。
  • 開啟檢查 Windows Live Writer 的Log file (紀錄檔):
    可以點選WLW左上角的圖是開啟主功能表,然後點選【關於Windows Live Writer】,在其對話框視窗的左下角點選【顯示紀錄檔】就可以起開啟記錄檔目錄了。
    開啟Windows Live Writer 2011記錄檔開啟Windows Live Writer 2011記錄檔
  • 檢查 Windows Live Writer 的Log file (紀錄檔):
    打開目錄後可能會發現有許多的紀錄檔,這些檔案紀錄了你操作WLW的大小事,最新的操作紀錄都會方在【Windows Live Writer.log】檔案。如果只想查看目前的問題,可以更改原來的檔案名稱,再重新操作一次WLW重現錯誤,這樣就可以紀錄到最新的操作步驟與錯誤紀錄了。
  • 檢視 Windows Live Writer 的Log file (紀錄檔):
    我把我的紀錄檔有問題的地方以紅色自來標示,可以看到問題出在 XmlRpc server,而錯誤訊息是【System.Xml.XmlException: 當剖析檔案 Name 時出現未預期的結尾。 】,看起來是字串長度不足造成的問題,如果你的問題跟我一樣,就可以按照下面的方法增加字串長度來修復。

    writable ribbon istream for C:\Windows Live Writer\Ribbon.dat”,””
    WindowsLiveWriter,1.7832,None,00020,22-Dec-2012 08:40:12.105,”Creating a writable ribbon istream for C:\Windows Live Writer\Ribbon.dat”,””
    WindowsLiveWriter,1.7832,None,00021,22-Dec-2012 08:40:20.882,”Exception parsing XML-RPC response:
    WindowsLive.Writer.CoreServices.XmlRpcClientInvalidResponseException: Invalid response document returned from XmlRpc server —> System.Xml.XmlException: 當剖析檔案 Name 時出現未預期的結尾。 第 18 行,位置 16。
       於 System.Xml.XmlTextReaderImpl.Throw(Exception e)
       於 System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
       於 System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String arg)
       於 System.Xml.XmlTextReaderImpl.ParseQName(Boolean isQName, Int32 startOffset, Int32& colonPos)
       於 System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
       於 System.Xml.XmlTextReaderImpl.ParseEndElement()
       於 System.Xml.XmlTextReaderImpl.ParseElementContent()
       於 System.Xml.XmlTextReaderImpl.Read()
       於 System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
       於 System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
       於 System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
       於 System.Xml.XmlDocument.Load(XmlReader reader)
       於 System.Xml.XmlDocument.LoadXml(String xml)
       於 WindowsLive.Writer.CoreServices.XmlRpcMethodResponse..ctor(String responseText)
       — 內部例外狀況堆疊追蹤的結尾 —
       於 WindowsLive.Writer.CoreServices.XmlRpcMethodResponse..ctor(String responseText)
       於 WindowsLive.Writer.CoreServices.XmlRpcClient.CallMethod(String methodName, XmlRpcValue[] parameters)
    <?xml version=””1.0″”?>
    <methodResponse>
      <params>
        <param>
          <value>
          <array><data>
      <value><struct>
      <member><name>isAdmin</name><value><boolean>1</boolean></value></member>
      <member><name>url</name><value><string>http://www.researchmfg.com/</string></value></member>
      <member><name>blogid</name><value><string>1</string></value></member>
      <member><name>blogName</name><value><string>電子製造,工作狂人(ResearchMFG)</string></value></member>
      <member><name>xmlrpc</name><value><string>http://www.researchmfg.com/xmlrpc.php</string></value></member>
    </struct></value>
    </data></array>
          </value>
        </param>
      </params>
    </methodRespons”,””
    WindowsLiveWriter,1.7832,None,00022,22-Dec-2012 08:40:23.491,”Creating a writable ribbon istream for C:\Windows Live Writer\Ribbon.dat”,””
    WindowsLiveWriter,1.7832,None,00023,22-Dec-2012 08:40:27.183,”Creating a writable ribbon istream for C:\Windows Live Writer\Ribbon.dat”,””
    WindowsLiveWriter,1.7832,None,00024,22-Dec-2012 08:40:29.801,”Creating a writable ribbon istream for C:\Windows Live Writer\Ribbon.dat”,””

Windows Live Writer 錯誤訊息:無效的伺服器回應(Invalid response document returned from XmlRpc server)的解決處理方法

這個方法是解決xmlrpc檔名長度不足所造成的錯誤問題,範例中將字串長度增加3,但以我的部落格為例,我只要將字串長度增加2就可以修復這個問題了,只增加1還是不行。從網路上看來,有些人的部落格似乎必須將字串長度增加到9才可以解決問題,所以自己試看看效果如何。
Windows Live Writer 錯誤訊息:無效的伺服器回應(Invalid response document returned from XmlRpc server)的解決處理方法

1. 使用FPT軟體打開wp-includes目錄下面的class-IXR.php檔案,然後尋找下面的程式碼:

$length = strlen($xml);

2. 這段程式碼位於 function output($xml) 之下,然後將其程式碼修改為:

$length = strlen($xml)+3;

3. 存檔後問題應該就解決了。


延伸閱讀:
解決錯誤訊息:無法找到 WordPress Content 目錄(wp-content)
如何解決WordPress “Error establishing a database connection(建立資料庫連線時發生錯誤)”
[已解決]WordPress登入顯示空白問題-更改wp-config.php

One response to “已解決:WLW無效的伺服器回應(Invalid response document returned from XmlRpc server)”

  1. cystc says:

    可能是wordpress和windows live writer在文字編碼上的差異引起的

Leave a Reply

Your email address will not be published. Required fields are marked *