可将 NEXT_SOAP_HEADER 和 SOAP_HEADER 函数结合使用来获得 SOAP 请求中的标头。NEXT_SOAP_HEADER 函数将遍历包含在 SOAP 请求封装中的 SOAP 标头并返回下一个 SOAP 标头名。如果用 NULL 调用该函数,该函数会返回第一个标头的名称。通过向 NEXT_SOAP_HEADER 函数传递上一个标头的名称来检索后续的标头。当用最后一个标头的名称调用该函数时,该函数返回 NULL。
下面的示例将说明 SOAP 标头检索:
SET hd_key = NEXT_SOAP_HEADER( hd_key ); IF hd_key IS NULL THEN -- no more header entries LEAVE header_loop; END IF; |
重复调用该函数将会返回所有的标头字段且仅返回一次,但不一定与其出现在 SOAP 请求中的顺序相同。
SOAP_HEADER 函数将返回指定的 SOAP 标头字段的值或 NULL(如果不是从 SOAP 服务调用)。当通过 Web 服务处理 SOAP 请求时,将使用该函数。如果给定字段名的标头不存在,则会返回值 NULL。
该示例将搜索名为 Authentication 的 SOAP 标头。当它找到此标头时,便会抽取整个 SOAP 标头的值以及 [@namespace] 和 [mustUnderstand] 属性的值。SOAP 标头值可能类似于下面的 XML 字符串:
<Authentication xmlns="CustomerOrderURN" mustUnderstand="1"> <userName pwd="none"> <first>John</first> <last>Smith</last> </userName> </Authentication> |
对于此标头,[@namespace] 属性值将为:[CustomerOrderURN]
同时,[mustUnderstand] 属性值将为 1
使用设置为 /*:Authentication/*:userName 的 XPath 字符串来通过 OPENXML 函数分析此 XML 字符串的内部。
SELECT * FROM OPENXML( hd_entry, xpath ) WITH ( pwd LONG VARCHAR '@*:pwd', first_name LONG VARCHAR '*:first/text()', last_name LONG VARCHAR '*:last/text()' ); |
通过使用上面所示的示例 SOAP 标头值,SELECT 语句将会创建一个如下所示的结果集:
pwd | first_name | last_name |
none | John | Smith |
在此结果集上会声明一个游标,且会将三个列值读取到三个变量中。此时,您获取了传递给 Web 服务的所有相关信息。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |