0

0

什么是SOAP协议 SOAP消息的XML结构详解

煙雲

煙雲

发布时间:2025-12-24 12:31:59

|

541人浏览过

|

来源于php中文网

原创

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

什么是soap协议 soap消息的xml结构详解

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本身不带业务逻辑,但它们的位置和内容组织影响通信成败:

Med-PaLM
Med-PaLM

来自 Google Research 的大型语言模型,专为医学领域设计。

下载
  • Header若存在,必须紧接在Envelope开始标签之后,顺序不能颠倒。
  • Body必须存在,且至少包含一个子元素——通常是方法调用(如)或响应(如)。
  • Header里的子元素可以带mustUnderstand="1"属性,表示接收方必须理解并处理该字段,否则需返回Fault。
  • Body中不允许混入Header语义的内容,所有上下文信息(如用户身份)应提前放入Header,保持Body专注业务载荷。

一个最小可用的SOAP请求示例

以下是一个符合SOAP 1.2规范、无Header、仅含简单调用的合法消息:



  
    
      IBM
    
  

注意:没有Header、没有Fault、命名空间正确、无DTD、无处理指令——它就能被标准SOAP引擎识别并转发。

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1834

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2078

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

909

2024.11.28

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

238

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

378

2023.11.14

HTTP 503错误解决方法
HTTP 503错误解决方法

HTTP 503错误表示服务器暂时无法处理请求。想了解更多http错误代码的相关内容,可以阅读本专题下面的文章。

739

2024.03.12

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1483

2024.08.16

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

0

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 3.8万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号