soap的命名空间

SOAP 命名空间 URI 要求
命名空间 URI 为给定的 SOAP 操作指定用于组成 SOAP 请求封装的 XML 命名空间。如果命名空间 URI 未被定义,将使用 URL 子句中的域组件。

服务器端的 SOAP 处理器使用此 URI 来了解请求的消息主体中各种实体的名称。CREATE PROCEDURE 和 CREATE FUNCTION 语句的 NAMESPACE 子句指定命名空间 URI。

在过程调用成功之前可能需要指定命名空间 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 子句的用法:


选择示例文本; 按 Ctrl+C 拷贝到剪贴板 
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 语句:



提交  
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 标头。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值