最近在研究Typecho的XML-RPC,我的需求是能够通过java程序和typecho进行通信,刚好Typecho自带的XML-RPC功能就可以实现这样的需求.

Typecho官网的文档写的很简介,关于这个功能没啥文档可以参考,所以只能从网上找相关的资源.

先看下维基百科的关于这个协议的介绍:

XML-RPC是一个远程过程调用(远程过程调用)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为发送机制。

https://zh.wikipedia.org/wiki/XML-RPC

简单说就是一个远程调用的协议,可以用这个协议,获取到Typecho的内容,以及可以推送内容到Typecho

该协议的使用也很简单:

// 一个典型的调用demo
<?xml version="1.0"?>
<methodCall>
   <methodName>circleArea</methodName>
      <params>
         <param>
            <value><double>2.41</double></value>
         </param>
      </params>
</methodCall>
// demo源: https://www.yiibai.com/xml-rpc/xml_rpc_request.html

响应的格式类似,也是xml格式.

但是在使用过程中,发现一个问题,信息传递的是正确的,但是返回报错信息:

<?xml version="1.0"?>
<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版本:

可以使用如下命令安装扩展:

// 搜索软件源 (可以根据版本进行搜索)
apt-cache search php7.0-xml
// 安装命令
apt-get install php7.0-xml

搜索时返回如下结果:

问题来了,问什么会没有呢?如果不加版本号的话是可以查询到的,但是因为使用的是7.0版本的,所有需要安装对应版本的扩展

推断可能是因为软件源的问题,所以需要更改软件源(debain系统下,ubuntu系统下可以参考:https://www.mf8.biz/ubuntu-debian-install-php7-3/):

// 安装软件源扩展源
apt -y install software-properties-common apt-transport-https lsb-release ca-certificates
// 添加GPG (这个源地址,不确定是不是官方的镜像地址,但是其他能用的源也没有找到)
wget -O /etc/apt/trusted.gpg.d/php.gpg https://mirror.xtom.com.hk/sury/php/apt.gpg
// 添加 sury 软件源
sh -c 'echo "deb https://mirror.xtom.com.hk/sury/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
// 更新缓存
apt-get update

现在我们再次来查询下:

可以看到已经可以查询到了,后续直接用安装命令安装即可

其中遇到两个坑:

  1. 因为我用的是lnmp脚本,在使用脚本升级PHP版本的时候一直失败,具体原因现在也不知道,所以回滚回了7.0版本
  2. ubuntu的ppa的源,如果直接在debian下直接使用的话,会出错,建议直接使用debian的方法

ps:图片没有加载出来,可以看我的公众号:
https://mp.weixin.qq.com/s/IcYqTYuRlDp63sp2wkR-kg

最后修改:2020 年 02 月 29 日
如果觉得我的文章对你有用,请随意赞赏