SOAP消息由Envelope(必需)、Header(可选)、Body(必需)、Fault(可选)四个XML元素构成,其中Envelope须含标准命名空间且禁用DTD与处理指令,Header须为Envelope首子元素并支持mustUnderstand属性,Body须含业务载荷且不可混入Header语义内容。

SOAP协议是一种基于XML的通信协议,专为应用程序之间跨网络交换结构化信息而设计。它不依赖操作系统或编程语言,靠严格的XML语法和约定实现互操作性。理解它的关键,就是看懂SOAP消息的XML结构——它不是随意写的XML,而是有强制层级、命名空间和语义规则的标准化封装。
SOAP消息的四大核心XML元素
每条合法的SOAP消息都由四个可能存在的XML元素组成,其中两个是必需的,两个是可选的:
- Envelope(信封):根元素,唯一标识这是一条SOAP消息。没有它,就不是SOAP。
- Header(头部):可选,必须作为Envelope的第一个子元素。常用于携带认证令牌、事务ID、路由指令等元数据。
- Body(主体):必需,包含实际要调用的方法名、参数,或服务返回的结果数据。
- Fault(错误):可选,只能出现在Body内,且最多一个。当处理失败时,用它结构化地描述错误类型、代码和详情。
Envelope元素的硬性要求
Envelope不只是个标签,它承载着协议识别和解析依据:
- 命名空间必须准确:
SOAP 1.1用 http://schemas.xmlsoap.org/soap/envelope/;
SOAP 1.2用 http://www.w3.org/2003/05/soap-envelope。
错一个字符,接收方就会拒绝整条消息。 - encodingStyle属性是可选的,但一旦出现,就必须指向标准编码命名空间,如 http://www.w3.org/2001/12/soap-encoding。
- 不能包含DTD声明或XML处理指令(比如),否则直接视为非法。
Header与Body的实际写法要点
Header和Body本身不带业务逻辑,但它们的位置和内容组织影响通信成败:
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~