第三十五章 添加和使用自定义标题元素 - 向 SOAP 消息添加自定义标头元素
向 SOAP
消息添加自定义标头元素
要将自定义标头元素添加到 SOAP
消息(来自 Web
服务或 Web
客户端),请在发送 SOAP
消息之前执行以下操作。
- 创建标题对象的实例。
- 根据需要设置该对象的属性,可选包括
actor
和mustUnderstand
属性。 - 将新标头添加到出站标头数组
HeadersOut
属性。此属性是一个具有常用数组接口的数组(例如,SetAt()
、Count()
和GetAt()
方法)。
注意:如果在实用程序方法中执行这些步骤,请注意该方法必须是实例方法,并且必须是可实例化类的成员(例如,而不是抽象类)。
然后在 Web
服务或客户端类中,可以使用一个添加标头元素的实用方法:
Method AddMyHeaderElement(mustUnderstand=0)
{
Set h=##class(MyHeaderElement).%New()
Set h.Subelement1 = "abc"
Set h.Subelement2 = "def"
If mustUnderstand {Set h.mustUnderstand=1}
Do ..HeadersOut.SetAt(h,"MyHeaderElement")
}
最后,可以从每个想要使用它的 Web
方法中调用此实用方法。例如:
/// Divide arg1 by arg2 and return the result
Method Divide(arg1 As %Numeric, arg2 As %Numeric) As %Numeric [ WebMethod ]
{
//main method code here
//...
do ..AddMyHeaderElement()
Quit ans
}
当调用此 Web
方法时,标头将添加到 SOAP
响应中。
指定支持的标头元素
网络服务和客户端自动支持 WS-Addressing
和 WS-Security
标头元素,但不自动支持其他标头元素。
要指定 Web
服务或 Web
客户端支持的标题元素,请执行以下操作:
- 定义类来表示这些标题元素,如定义自定义标题元素中所述。
- 将标题元素类与
Web
服务或Web
客户端的标题元素关联。
可以通过以下两种方式之一执行此操作:
- 向
Web
服务或客户端类添加XData
块。在此XData
块中,指定特定标头元素与相应标头元素类之间的关联。
如果服务或客户端类还将类参数 USECLASSNAMESPACES
设置为 1
(推荐值),则在生成的 WSDL
中使用此标头信息。
- 在
Web
服务或Web
客户端类中,指定SOAPHEADERS
参数。在此参数中,指定特定标头元素与相应标头元素类之间的关联。
注意:此技术灵活性较差,不会影响生成的 WSDL
,现在已被弃用。
网友评论