0

我正在使用 HTTPie 向POST我的本地 Wordpress 安装发出请求,目的是检查 XML-RPC 是否可用和启用。

http --verify=no POST https://crmpicco.localhost/xmlrpc.php data="<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>admin</value></param><param><value>pass</value></param></params></methodCall>"

这将返回一个200,但响应有一个故障代码:

HTTP/1.1 200 OK
Connection: close
Content-Length: 403
Content-Type: text/xml; charset=UTF-8
Date: Fri, 08 Mar 2019 03:18:43 GMT
Server: Apache/2.4.35 (Unix) OpenSSL/1.0.2p PHP/7.2.11
X-Powered-By: PHP/7.2.11

<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value><int>-32700</int></value>
        </member>
        <member>
          <name>faultString</name>
          <value><string>parse error. not well formed</string></value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

其他有此问题的人指出php-xml扩展程序不可用,但是当我这样做时,php -m | grep -i xml它显示为已安装:

libxml
SimpleXML
xml
xmlreader
xmlrpc
xmlwriter

我错过了什么?

4

2 回答 2

0

我有同样的问题,对 wordpress API 的调用适用于 phpxmlrpc-4.0.0,但是有一些关于不推荐使用的函数的警告,所以我升级到 phpxmlrpc-4.4.1,然后得到这个“解析错误。格式不正确”错误

更新:我刚刚找到了解决方法:在文件“lib/xmlrpc.inc”中,更改编码设置:

从:

PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'ISO-8859-1';

至:

PhpXmlRpc\PhpXmlRpc::$xmlrpc_internalencoding = 'UTF-8';

另一个节点是:设置

$xml_rpc_client->request_charset_encoding="UTF-8"

只是让我的文字内容混乱

于 2019-12-03T06:22:33.563 回答
0

为此,我不得不回退到使用 cURL。我不确定我在 HTTPie 上到底做错了什么,或者它在这方面是否有限制,但是它与 cURL 一起使用:

curl -k -d '<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value>user</value></param><param><value>pass</value></param></params></methodCall>' https://crmpicco.localhost/xmlrpc.php

于 2019-03-11T03:39:06.547 回答