命名空间 URI 为给定的 SOAP 操作指定用于组成 SOAP 请求封装的 XML 命名空间。如果命名空间 URI 未被定义,将使用 URL 子句中的域组件。
服务器端的 SOAP 处理器使用此 URI 来了解请求的消息主体中各种实体的名称。CREATE PROCEDURE 和 CREATE FUNCTION 语句的 NAMESPACE 子句指定命名空间 URI。有关详细信息,请参见Web 客户端 SQL 语句。
在过程调用成功之前可能需要指定命名空间 URI。本信息通常在公共 Web 服务器文档中有所说明,但也可以从 Web 服务器上可用的 WSDL 中获得要求的命名空间 URI。在尝试与 SQL Anywhere Web 服务器通信时,可以通过访问 DISH 服务来生成 WSDL。
通常,可以从 WSDL 文档开头的 targetNamespace 属性中复制 NAMESPACE,该属性在 wsdl:definition 元素中指定。包含尾随的 "/" 时请务必谨慎,因为它们非常重要。第二,检查给定 SOAP 操作的 soapAction 属性。它应当和下面将要说明的生成的 SOAPAction HTTP 标头相对应。
NAMESPACE 子句满足两个函数。它为 SOAP 封装的主体指定了命名空间,并且如果过程指定了 TYPE 'SOAP:DOC',它将用作 SOAPAction HTTP 标头的域组件。
以下示例说明了 NAMESPACE 子句的用法:
CREATE function an_operation( a_parameter long varchar ) RETURNS long varchar URL 'http://wsdl.domain.com/fictitious.asmx' TYPE 'SOAP:DOC' NAMESPACE 'http://wsdl.domain.com/' |
在 Interactive SQL 中运行以下 SQL 脚本:
SELECT an_operation('a_value'); |
此脚本生成类似以下输出的 SOAP 请求:
POST /fictitious.asmx HTTP/1.0 SOAPAction: "http://wsdl.domain.com/an_operation" Host: wsdl.domain.com Content-Type: text/xml Content-Length: 387 Connection: close <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://wsdl.domain.com/"> <SOAP-ENV:Body> <m:an_operation> <m:a_parameter>a_value</m:a_parameter> </m:an_operation> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
前缀 "m" 的命名空间设置为 http://wsdl.domain.com/ 且 SOAPAction HTTP 标头为 SOAP 操作指定一个完全限定的 URL。
尾随斜线并非 SQL Anywhere 进行正确操作所必需,但会导致一个难以诊断的响应失效。不论尾随斜线是否存在,都会正确生成 SOAPAction HTTP 标头。
如果未指定 NAMESPACE,将使用 URL 子句的域组件作为 SOAP 主体的命名空间,如果过程为 TYPE 'SOAP:DOC',它将用于生成 HTTP SOAPAction HTTP 标头。如果在上例中 NAMESPACE 子句被省略,将用 http://wsdl.domain.com 作为命名空间。细微差别在于不存在尾随斜线 "/"。该 SOAP 请求的其它任何方面,包括 SOAPAction HTTP 标头都将和上例相同。
NAMESPACE 子句用于为 SOAP 主体按照上面 SOAP:DOC 示例所述指定命名空间。然而,SOAPAction HTTP 标头生成时值为空:SOAPAction: ""
使用 SOAP:DOC 请求类型时,命名空间也用于组成 SOAPAction HTTP 标头。
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |