XML-RPC 是一种基于 XML 和 HTTP 的轻量级 RPC 协议,请求以 methodCall 包裹 methodName 和 params,响应为 methodResponse 包裹 params 或 fault,Python 用 xmlrpc.client 可简化调用。
XML-RPC 是一种轻量级的远程过程调用(RPC)协议,用 XML 编码请求和响应,通过 HTTP 传输。它不依赖复杂框架,适合简单系统间通信,比如 WordPress 的 API、老版本的博客工具或内部服务对接。
XML-RPC 请求结构怎么写
一次调用本质是发送
一个 POST 请求,Body 是格式严格的 XML。核心包含三部分:methodCall 根节点、methodName(要调用的函数名)、params(参数列表,每个参数用 param 包裹,类型由 value 内的类型标签标明)。
例如调用 system.listMethods(获取服务器支持的方法列表):
服务端怎么接收并响应
服务端监听 HTTP POST 请求,解析 XML,提取方法名和参数,执行对应逻辑,再按 XML-RPC 规范返回 XML 响应。响应必须是 methodResponse 包裹的 params(成功)或 fault(错误)。
成功响应示例(返回字符串数组):
客户端怎么发请求(以 Python 为例)
Python 标准库 xmlrpc.client 封装了全部细节,不用手拼 XML 或处理 HTTP。
- 创建代理对象:
server = xmlrpc.client.ServerProxy('http://example.com/xmlrpc.php') - 直接像调用本地函数一样使用:
methods = server.system.listMethods() - 传参也自然:
result = server.sample.add(2, 3)(假设服务端有sample.add方法) - 异常捕获用
xmlrpc.client.Fault处理服务端错误,socket.error处理网络问题
注意事项和常见坑
XML-RPC 类型有限(int、string、boolean、double、dateTime.iso8601、base64、array、struct),没有 null 或自定义对象;时间必须是 ISO8601 格式;数组和结构体嵌套层级不宜过深;HTTP 头需设 Content-Type: text/xml;服务端要正确返回 200 OK 状态码,否则客户端可能解析失败。
基本上就这些。不复杂但容易忽略格式细节,建议先用现成客户端连公开测试服务(如 https://betty.userland.com/RPC2)验证流程。








