7.2. 将标头添加到 SOAP 1.2 消息
概述 复制链接链接已复制到粘贴板!
SOAP 消息标头通过在 SOAP 1.2 消息中添加 soap12:header
元素来定义。soap12:header
元素是绑定的 输入
、输出和
fault
元素的可选子级。SOAP 标头成为父消息的一部分。SOAP 标头通过指定消息和消息部分来定义。每个 SOAP 标头只能包含一个消息部分,但您可以根据需要插入多个标头。
语法 复制链接链接已复制到粘贴板!
例 7.3 “SOAP 标头语法” 中显示定义 SOAP 标头的语法。
例 7.3. SOAP 标头语法
soap12:header
元素的属性在 表 7.1 “soap12:header
属性” 中进行了描述。
在正文和标头之间分割消息 复制链接链接已复制到粘贴板!
插入到 SOAP 标头中的消息部分可以是合同中的任何有效消息部分。它甚至也可以是来自用作 SOAP 正文的父消息的一部分。由于您不太可能在同一消息中发送信息两次,因此 SOAP 1.2 绑定提供了一种指定插入到 SOAP 正文中的消息部分的方法。
soap12:body
元素有一个可选属性 parts
,它采用以空格分隔的部分名称列表。当定义 部分
时,只有列出的消息部分会插入到 SOAP 1.2 消息的正文中。然后,您可以将剩余的部分插入到消息的标头中。
当您使用父消息的部分定义 SOAP 标头时,Apache CXF 会自动填写 SOAP 标头。
示例 复制链接链接已复制到粘贴板!
例 7.4 “使用 SOAP 标头的 SOAP 1.2 Binding” 显示 例 7.1 “排序系统接口” 中显示的 orderWidgets
服务的修改版本。此版本会被修改,以便每个顺序都有一个 xsd:base64binary
值,放置在请求和响应标头中。标头被定义为 widgetKey
消息中的 keyVal
部分。在这种情况下,您负责添加应用程序逻辑来创建标头,因为它不是输入或输出消息的一部分。
例 7.4. 使用 SOAP 标头的 SOAP 1.2 Binding
您可以修改 例 7.4 “使用 SOAP 标头的 SOAP 1.2 Binding”,以便标头值是输入和输出信息的一部分,如 例 7.5 “SOAP 1.2 Binding for orderWidgets with a SOAP Headers” 所示。在这种情况下,keyVal
是输入和输出消息的一部分。在 soap12:body
元素中
,part 属性指定 keyVal
不应插入到正文中。但是,它将插入到标头中。
例 7.5. SOAP 1.2 Binding for orderWidgets with a SOAP Headers