文章目录
- 第三十三章 添加和使用自定义标题元素
- `SOAP` 标头元素简介
- 如何表示 SOAP 标头
第三十三章 添加和使用自定义标题元素
本主题介绍如何添加和使用自定义 SOAP 标头元素。
有关发生故障时添加标头元素的信息,请参阅 SOAP 故障处理。
WS-Addressing 标头元素在其他地方进行了描述。有关 WS-Security 标头元素的信息,请参阅“保护 Web 服务”。
SOAP 标头元素简介
SOAP 消息可以包含标头( <Header> 元素),其中包含一组标头元素。例如:
<SOAP-ENV:Envelope><SOAP-ENV:Header><MyHeaderElement><Subelement1>abc</Subelement1><Subelement2>def</Subelement2></MyHeaderElement></SOAP-ENV:Header><SOAP-ENV:Body>
...</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
非正式地,每个标头元素通常称为标头。这并不完全准确,因为消息本身最多可以包含一个标头,该标头始终为 <Header>,并带有适当的命名空间前缀。标头可以包含 WS-Security 标头元素、WS-Addressing 标头元素和您自己的自定义标头元素。
标头元素包含其他信息,供接收 SOAP 消息的 Web 服务或 Web 客户端使用。在此处显示的示例中,此信息包含在 XML 元素中。标头元素还可以包含 XML 属性,尽管上例中未显示任何属性。SOAP 标准指定了三个标准属性(mustUnderstand、actor 和 encodingStyle),以指示接收者应如何处理 SOAP 消息。
如何表示 SOAP 标头
IRIS 数据平台将每个标题元素表示为 %SOAP.Header或其子类之一的实例。%SOAP.Header 是一个支持 XML 的类,其属性对应于标准标题元素属性 (mustUnderstand、actor 和 encodingStyle)。
IRIS 提供 %SOAP.Header的专用子类,用于 WS-Addressing 和 WS-Security。要表示自定义标头元素,您可以创建自己的 %SOAP.Header子类。
当 Web 服务或客户端收到 SOAP 消息时,它会导入并处理该消息。在此步骤中,如果消息包含带有自定义标头元素的标头,则 IRIS 会将标头元素与受支持的标头元素列表进行比较(下一小节将讨论)。
然后,服务或客户端创建每个适用的标头元素类的实例,将其插入到数组中,并将该数组放置在其自己的 HeadersIn 属性中:

要使用这些标头元素, Web 服务或客户端可以访问 HeadersIn 属性。如果 SOAP 消息不包含 <Header> 元素,则 HeadersIn 属性的 Count() 为 0。
类似地,在 Web 服务或客户端发送 SOAP 消息之前,它必须更新 HeadersOut 属性,以便它包含想要包含在出站消息中的任何自定义元素。如果 HeadersOut Count() 为 0,则出站 SOAP 消息不包含 <Header> 元素。

对于自定义标题元素,始终使用 HeadersIn 和 HeadersOut 属性。
其他(非自定义)标题元素的细节有所不同:
- 对于
WS-Addressing,请使用AddressingIn和AddressingOut属性,而不是HeadersIn和HeadersOut属性。请参阅添加和使用WS-Addressing标头元素。 - 对于
WS-Security标头元素,请使用“保护We服务”中描述的WS-Policy功能。
或者直接使用 SecurityIn 和 SecurityOut 属性,如“保护 Web 服务”中所述。这通常需要做更多工作。
(请注意,WS-Security 标头元素也包含在 HeadersIn 和 HeadersOut 属性中,但不建议通过这些属性访问或设置它们。)
IRIS SOAP会话支持使用HeadersIn和HeadersOut属性。请参阅SOAP会话管理。