xml-rpc 是一种基于 http 和 XML 的轻量级跨语言远程调用协议,客户端通过 Serverproxy 调用服务端方法,参数与返回值自动序列化/反序列化,适用于中小系统集成,但不适用于高并发场景。

XML-RPC 是一种轻量级的远程过程调用协议,它用 XML 编码数据、HTTP 传输请求,让不同语言、不同系统的程序能互相调用函数。
XML-RPC 的核心特点
它不依赖特定平台或语言,只要支持 HTTP 和 XML 就能接入。服务器暴露方法名,客户端按约定格式发 POST 请求,服务端执行后返回 XML 格式的结构化结果。整个流程简单明确,适合中小规模系统集成或旧系统桥接。
XML-RPC 调用的基本步骤
客户端调用需完成四个关键动作:
- 确定服务地址(URL),比如 https://www.php.cn/link/bf84bd4c313f518513480e20d34412ba
- 选择要调用的方法名(如 system.listMethods 或自定义的 user.login)
- 准备参数:python 中直接传原生类型(int、str、list、dict 等),xmlrpc.client 会自动转成 XML
- 发起调用:用 server.method_name(arg1, arg2) 方式触发,返回值也自动从 XML 解析为 Python 对象
Python 中最常用的调用写法
使用标准库 xmlrpc.client 模块,几行就能完成:
import xmlrpc.client 连接服务端
server = xmlrpc.client.ServerProxy("https://www.php.cn/link/bf84bd4c313f518513480e20d34412ba")
调用方法(例如获取支持的方法列表)
methods = server.system.listMethods()
带参数调用(如登录)
result = server.user.login("admin", "123456")
返回值是普通 Python 字典或列表,无需手动解析 XML
print(result)
常见注意事项
实际使用中容易踩坑的地方:
- 服务端必须开启 XML-RPC 支持,且路径和方法名要与客户端完全一致(大小写敏感)
- 参数类型要符合服务端预期,比如日期不能传字符串,得用 xmlrpc.client.DateTime
- 网络超时、连接拒绝、XML 解析失败都会抛出对应异常,建议用 try/except 包裹调用
- 不推荐用于高并发或低延迟场景——HTTP + XML 开销比 jsON-RPC 或 gRPC 明显更高