XML-RPC是一种基于XML的远程调用协议,通过HTTP传输XML格式的请求和响应,实现跨平台通信;客户端将方法名和参数封装为XML发送至服务器接口(如/xmlrpc.php),服务器解析后执行对应函数并返回XML格式结果;支持int、string、boolean、double、dateTime.iso8601、base64、struct和array等标准数据类型,确保跨系统兼容性;曾广泛用于WordPress外部编辑、博客Ping通知、CMS远程管理及老旧系统集成;但由于存在XML注入风险、缺乏内置认证、消息体积大、解析开销高等问题,逐渐被JSON-RPC和REST取代,许多网站已禁用该功能以提升安全性;尽管应用减少,理解XML-RPC仍有助于维护旧系统或对接特定服务。

XML-RPC 是一种基于 XML 的远程过程调用(Remote Procedure Call)协议,它允许一台计算机上的程序请求另一台计算机上的服务或执行函数,就像调用本地函数一样。该协议使用 HTTP 作为传输机制,将请求和响应以 XML 格式编码,从而实现跨系统、跨平台的通信。
基本工作原理
XML-RPC 的核心思想是把函数调用封装成 XML 文档,通过 HTTP 发送到服务器,服务器解析 XML,执行对应的方法,并将结果再次以 XML 格式返回给客户端。典型流程如下:
- 客户端将方法名和参数打包成 XML 格式的请求体
- 通过 POST 请求发送到服务器指定的接口(如 /xmlrpc.php)
- 服务器解析 XML,查找并执行对应方法
- 执行结果被封装成 XML 响应,返回给客户端
- 客户端解析响应 XML,获取返回值或错误信息
数据类型与结构
XML-RPC 定义了一组标准的数据类型,用于确保跨平台兼容性,包括:- int 或 i4:整数
- string:字符串
- boolean:布尔值(0 或 1)
- double:浮点数
- dateTime.iso8601:日期时间
- base64:二进制数据
- struct:键值对结构,类似字典或对象
- array:有序值列表
这些类型在 XML 中有明确的标签表示,例如:
采用HttpClient向服务器端action请求数据,当然调用服务器端方法获取数据并不止这一种。WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。 实现Android与服务器端数据交互,我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,
Hello World
常见应用场景
尽管现在逐渐被 JSON-RPC 和 REST API 取代,XML-RPC 仍在一些系统中广泛使用:- WordPress 的外部编辑器接口(如使用 Windows Live Writer)
- 博客平台之间的 Ping 通知(如 pingback、trackback)
- 某些内容管理系统(CMS)的远程管理功能
- 老旧系统间的集成通信
安全与局限性
由于设计较早,XML-RPC 存在一些安全和性能方面的不足:- XML 解析可能带来注入风险(如 XML 外部实体注入)
- 缺乏内置认证机制,依赖上层保护
- 消息体积大,解析开销高
- 不如现代 API 协议灵活(如不支持流式传输)
出于安全考虑,很多网站会禁用 XML-RPC 功能,尤其是 WordPress 用户常通过插件或配置关闭 /xmlrpc.php 以防止暴力破解攻击。
基本上就这些。XML-RPC 是早期分布式计算的重要工具,虽然现在用得少了,但理解它有助于排查旧系统问题或对接特定服务。









