最近在研究Typecho的XML-RPC,我的需求是能够通过java程序和typecho进行通信,刚好Typecho自带的XML-RPC功能就可以实现这样的需求.
Typecho官网的文档写的很简介,关于这个功能没啥文档可以参考,所以只能从网上找相关的资源.
先看下维基百科的关于这个协议的介绍:
XML-RPC是一个远程过程调用(远程过程调用)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为发送机制。
简单说就是一个远程调用的协议,可以用这个协议,获取到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现在我们再次来查询下:
可以看到已经可以查询到了,后续直接用安装命令安装即可
其中遇到两个坑:
- 因为我用的是lnmp脚本,在使用脚本升级PHP版本的时候一直失败,具体原因现在也不知道,所以回滚回了7.0版本
- ubuntu的ppa的源,如果直接在debian下直接使用的话,会出错,建议直接使用debian的方法
ps:图片没有加载出来,可以看我的公众号:
https://mp.weixin.qq.com/s/IcYqTYuRlDp63sp2wkR-kg