文章目录
- 第三十七章 添加和使用自定义标题元素 - 自定义标头的继承
- 自定义标头的继承
- 示例
- 在 `SOAPHEADERS` 参数中指定支持的标头元素
- 自定义标头的继承
第三十七章 添加和使用自定义标题元素 - 自定义标头的继承
自定义标头的继承
如果创建此Web 服务的子类,该子类将继承不特定于方法的标头信息 — 包含在 <request> 或 <response> 元素中的标头信息,这些元素是 <parameters>. 的直接子元素。即使 SOAPMETHODINHERITANCE 为 0,情况也是如此。
示例
另一个示例如下:
XData service
{
<parameters xmlns="https://www.intersystems.com/configuration"><response><header name="Header2" class="User.Header4" alias="Header4"/><header name="Header3" class="User.Header3"/></response><method name="echoBase64"><request><header name="Header2" class="User.Header4" alias="Header4"/><Action>https://soapinterop.org/Round2Base.Service.echoBase64Request</Action></request><response><header name="Header2" class="User.Header2" alias="Header2"/><header name="IposTransportHeader" class="ipos.IposTransportHeader"/><Action>https://soapinterop.org/Round2Base.Service.echoBase64Result</Action></response></method><method name="echoString"><request><Action>https://soapinterop.org/Round2Base.Service.echoStringRequest</Action></request><response><Action>https://soapinterop.org/Round2Base.Service.echoStringAnswer</Action></response></method>
</parameters>
}
在 SOAPHEADERS 参数中指定支持的标头元素
指定支持的标头元素的旧方法是在 Web 服务或 Web 客户端类中包含 SOAPHEADERS 参数。
此参数必须等于以逗号分隔的标头规范列表。每个标头规范均具有以下格式:
headerName:headerPackage.headerClass
其中 headerName 是受支持标头的元素名称,headerPackage.headerClass 是代表该标头的类的完整包和类名称。例如:
Parameter SOAPHEADERS = "MyHeaderElement:Scenario1Client.MyHeaderElement"
此列表标识了对此 Web 服务或客户端的 SOAP 请求中支持的所有标头,并指明了每个标头映射到的类。
如果使用此较旧的技术,请注意以下几点:
- 对于
Web服务,此技术不会影响生成的WSDL。 - 无法为特定的
Web方法指定不同的标头元素。 SOAP向导不再在生成的Web服务和客户端类中生成SOAPHEADERS参数。- 此技术已被弃用。
自定义标头的继承
如果创建此 Web 服务的子类,则该子类将继承 SOAPHEADERS 参数。即使 SOAPMETHODINHERITANCE 为 0,情况也是如此。
对于每个受支持的标头元素,服务或客户端都会创建相应标头类的实例,并将标头添加到入站标头数组,即 HeadersIn 属性。此属性是一个具有常用数组接口的数组(例如,SetAt()、Count() 和 GetAt() 方法)。然后,Web 服务或 Web 客户端可以根据需要对这些标头采取行动。
注意:header 元素命名空间不用于匹配列表中的 header 元素。但是,SOAP 消息中的 header 元素命名空间必须与 header 元素子类中的 NAMESPACE 参数指定的命名空间相同;否则,导入消息时会出现错误。