第三十七章 添加和使用自定义标题元素 - 自定义标头的继承
自定义标头的继承
如果创建此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
参数指定的命名空间相同;否则,导入消息时会出现错误。
网友评论