繁体   English   中英

我无法通过 wordpress_xmlrpc 从 python 发布到我的 wordpress 网站我得到 ExpatError: not well-formed (invalid token): line 1, column 222

i can't post from python to my wordpress site by wordpress_xmlrpc i get ExpatError: not well-formed (invalid token): line 1, column 222

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我无法通过 wordpress_xmlrpc 从 python 发布到我的 wordpress 网站我得到 ExpatError: not well-formed (invalid token): line 1, column 222

当我尝试运行此代码时

from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

wp = Client('http://mysite.wordpress.com/xmlrpc.php', 'username', 'password')

我收到此错误 ExpatError: not well-formed (invalid token): line 1, column 222

2 个回复

我是在GitHub 上回复你的,我认为如果我们把它从 GitHub 上移走对其他订阅者会更好,因为它似乎是一个 WordPress 问题。

根据 Max,这似乎特定于您的 WordPress 网站。 由于我们无法访问您的网站,因此我们无法具体告诉您发生了什么。 根据我们的对话,以下是常见的故障排除技巧:

  1. 禁用您的插件并切换到默认主题,然后尝试连接
  2. 如果有效,请重新启用主题并检查
  3. 如果它仍然有效,请重新启用 1 个插件并再次检查。
  4. 对所有插件重复步骤 3。

在 GitHub 上,您提到即使禁用所有插件,问题仍然存在。 您是否尝试过切换到默认设置(如 WordPress 2017)并再次尝试?

我知道您不想在此处发布有关您网站的敏感信息,但您能告诉我们一些事情吗?

  • 您的 WordPress 版本
  • 您网站上的插件
  • 你使用的是什么主题

希望这可以帮助我们缩小问题的范围。

显然,问题在于 Wordpress 的 XMLRPC 返回编码为 Python 称为“utf8-sig”而不是“utf8”的 XML,并且xmlrpc.client.Transport不检查导致失败的初始 BOM。

我解决了monkeypatching Transport.parse_response的问题,如下所示:

from xmlrpc import client
from xmlrpc.client import GzipDecodedResponse

def parse_response_(self, response):
    # Monkeypatching of xmlrpc
    # xmlrpc.client -> Transport.parse_response doesn't check for starting BOM
    # Code lifted directly from xmlrpc.client except as noted

    # read response data from httpresponse, and parse it
    # Check for new http response object, otherwise it is a file object.
    if hasattr(response, 'getheader'):
        if response.getheader("Content-Encoding", "") == "gzip":
            stream = GzipDecodedResponse(response)
        else:
            stream = response
    else:
        stream = response

    p, u = self.getparser()

    start = True # added
    bom = b'\xef\xbb\xbf\xef\xbb\xbf' # added
    while 1:
        data = stream.read(1024)
        if not data:
            break
        if self.verbose:
            print("body:", repr(data))

        # start addition
        if start:
            if data.startswith(bom):
                data = data[len(bom):]
                start = False
        # end addition

        p.feed(data)

    if stream is not response:
        stream.close()
    p.close()

    return u.close()

client.Transport.parse_response = parse_response_

1 Python博客,wordpress_xmlrpc不会“发布”

我正在尝试Python wordpress_xmlrpc文档http://python-wordpress-xmlrpc.readthedocs.org/en/latest/overview.html中的内容 。 这是我所拥有的: 问题在于它仅将草稿添加到博客中,而不会将其作为新帖 ...

2 python中的Wordpress_xmlrpc图像alt属性

我尝试使用XML-RPC python在WordPress中上传图片。 但是我无法在将图像上传到wordpress时设置图像的alt属性。 如何添加? 这是我在python 3.7中的wordpress中上传图片的代码: 在WordPress中上传图片时如何添加图片alt属性? 提前致谢 ...

7 使用xmlrpc从Java发布到Wordpress

我使用以下代码成功使用xmlrpc发布到Java中的wordpress 除类别外,其他所有内容均正常运行。 我已经看到它们需要以数组形式传递,但是我没有像这样成功传递它们: 谁能帮我弄清楚为什么未显示类别? ...

9 使用python-wordpress-xmlrpc发布时无法设置页面模板

我创建了一个脚本,该脚本在运行时会发布到我的网站上(请参见下面的代码),并且一切正常,但似乎无法为我创建的页面设置模板。 我发现此问题发布在资源库( https://github.com/maxcutler/python-wordpress-xmlrpc/issues/44 )中,我尝试 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM