文章目录
- 第三十三章 添加和使用自定义标题元素
- `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
会话管理。