SOAP是一种基于XML的跨平台Web服务协议,核心由Envelope、Header(可选)和Body(必需)三部分构成;XML提供自描述、强类型的统一数据格式,配合WSDL定义严格接口契约,通常通过HTTP传输,适用于金融、政务等需高安全性与事务保障的场景。

SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在分布式环境中交换结构化信息,尤其在Web服务中实现跨平台、跨语言的通信。它不依赖特定传输协议,但最常用HTTP作为底层传输方式。
SOAP的核心组成
一个SOAP消息是一个标准的XML文档,包含三个关键部分:
- Envelope:根元素,定义消息的开始与结束,标识整个内容为SOAP消息
- Header(可选):携带元数据,如认证凭证、路由指令、事务ID等,便于中间节点处理
- Body(必需):承载实际的请求或响应数据,比如调用的方法名和参数,或返回的结果
XML如何支撑SOAP通信
XML为SOAP提供了统一的数据表示格式,确保不同系统能无歧义地解析消息内容:
采用HttpClient向服务器端action请求数据,当然调用服务器端方法获取数据并不止这一种。WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。 实现Android与服务器端数据交互,我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问WebService,但是这些库并不适合我们资源有限的android手机客户端,
- 所有字段、类型、嵌套关系都通过标签和命名空间显式声明,例如
123 - 借助XML Schema(XSD),服务提供方可定义严格的接口契约(WSDL),客户端据此生成匹配的请求结构
- XML的自描述性和平台无关性,让Java、.NET、Python等不同技术栈能按相同规则序列化/反序列化消息
典型SOAP通信流程
以调用天气查询服务为例:
- 客户端构造符合WSDL定义的SOAP请求XML,通过HTTP POST发送到服务端URL
- 服务端解析Envelope,提取Body中的操作名(如GetWeather)和参数(如城市名)
- 执行业务逻辑后,将结果封装进新的SOAP响应XML,同样使用标准结构和命名空间返回
- 客户端依据相同Schema验证并解析响应Body,获取所需数据
本质上,SOAP把远程方法调用“翻译”成XML文档,再靠HTTP传送——XML是它的语法,HTTP是它的信封,而WSDL是它的说明书。虽然现在REST+JSON更流行,但SOAP仍在金融、政务等强调安全、事务和严格契约的场景中广泛使用。









