- 论坛徽章:
- 0
|
HTTP GET 和 POST 绑定
为了描述 Web 浏览器与 Web 站点之间的交互,WSDL 中包含了对 HTTP 1.1 的 GET 和 POST 谓词的绑定。这就使得除 Web 浏览器外,其它应用程序也可以与站点进行交互。可以指定以下协议专用信息:
指定绑定使用 HTTP GET 或 POST
端口地址
每个操作的相对地址(相对于端口定义的基址而言)
HTTP GET/POST 示例
下例显示了为指定端口类型以不同方式绑定了三个端口。
如果传递的值是 part1=1、part2=2、part3=3,则每个端口的请求格式如下所示:
port1: GET, URL="http://example.com/o1/A1B2/3"
port2: GET, URL="http://example.com/o1?p1=1&p2=2&p3=3
port3: POST, URL="http://example.com/o1", PAYLOAD="p1=1&p2=2&p3=3"
对于每个端口,响应均是一张 GIF 或 JPEG 图像。
示例 5. 使用 GET 与 FORM POST 返回 GIF 或 JPEG
HTTP GET/POST 绑定如何扩展 WSDL
HTTP GET/POST 绑定使用下列扩展性元素对 WSDL 进行扩展:
将在下文中对这些元素进行介绍。
http:address
location 属性指定端口的基本 URI。该属性的值与 http:operation 绑定元素的 location 属性的值组合使用。
http:binding
http:binding 元素表示此绑定使用 HTTP 协议。
verb 属性是必备属性,其值指定 HTTP 谓词。常用的值是 GET 或 POST,但是也可以使用其它值。请注意,HTTP 谓词是区分大小写的。
http:operation
location 属性指定操作的相对 URI。该 URI 与 http:address 元素中指定的 URI 组合在一起,构成 HTTP 请求的完整 URI。URI 值必须是相对 URI。
http:urlEncoded
urlEncoded 元素表示使用标准 URI 编码规则 (name1=value&name2=value…) 将所有消息片段编码为 HTTP 请求 URI。参数的名称对应于消息片段的名称。片段所提供的每个值均使用一个 name=value 对进行编码。将其与 GET 一起使用可指定 URL 编码,与 POST 一起使用可指定 FORM-POST。对于 GET,将根据需要自动追加“?”字符。
http:urlReplacement
http:urlReplacment 元素表示使用替换算法将所有消息片段编码为 HTTP 请求 URI:
按照一组搜索模式,搜索 http:operation 的相对 URI 值。
搜索发生在 http:operation 的值与 http:address 的 location 属性值组合之前。
每个消息片段都有一个搜索模式。搜索模式字符串是用括号“(”和“)”括起来的消息片段的名称。
对于每个匹配,将在匹配处用匹配值替换相应消息片段的值。
在执行匹配之后,才会替换值(替换的值不会触发其它匹配)。
消息片段不能具有重复值。
MIME 绑定
WSDL 提供一种方法,可将抽象类型绑定到某种 MIME 格式的具体消息。它为以下各类 MIME 定义了绑定:
multipart/related
text/xml
application/x-www-form-urlencoded(在 HTML 中用于提交表单的格式)
其它(通过指定 MIME 类型字符串)
已定义的 MIME 类型很多,而且还在不断增加,因此 WSDL 没有必要为每种 MIME 类型都定义 XML 语法。必要时,可以添加其它语法来定义新的 MIME 类型。如果 MIME 类型字符串足以描述内容,则可以使用下面定义的 mime 元素。
MIME 绑定示例
示例 7. 将 multipart/related 与 SOAP 一起使用
此示例说明可以通过 SOAP 1.1 HTTP 绑定将 GetCompanyInfo SOAP 1.1 请求发送到 StockQuote 服务。该请求接受类型为字符串的 ticker 符号。而响应则包含以 MIME 格式 multipart/related 进行编码的多个片段:包含当前股票价格(类型为浮点数)的 SOAP 信包、HTML 格式的股票交易资料文档(可选)、GIF 或 JPEG 格式的公司徽标(可选)。
MIME 绑定如何扩展 WSDL
MIME 绑定使用下列扩展性元素对 WSDL 进行扩展:
*
它们在 WSDL 中的以下位置出现:
出现在输入和输出部分下的 MIME 元素用于指定 MIME 格式。如果出现了多个这样的元素,则表示可以使用其中任何一个。
mime:content
为了避免需要为每种 MIME 格式定义新的元素,在除 MIME 类型字符串外不再需要传送有关格式的其它信息时,可以使用 mime:content 元素。
part 属性用于指定消息片段的名称。如果消息只有一个片段,也可以不指定 part 属性。type 属性包含 MIME 类型字符串。type 值分为两部分,用斜杠 (/) 分隔,其中一个部分可以是通配符 (*)。如果没有指定 type 属性,则表示所有 MIME 类型都可以接受。
如果返回格式是 XML,而预先又不知道架构,则可以使用一般 mime 元素,表示类型为 text/xml:
可以使用通配符 (*) 指定一系列 mime 类型,例如所有文本类型。
以下两个示例都指定了所有 mime 类型:
mime:multipartRelated
multipart/related MIME 类型将任意一组由 MIME 格式化的片段聚合为一条使用 MIME 类型“multipart/related”的消息。mime:multipartRelated 元素描述该消息的具体格式:
*
mime:part 元素用于描述 multipart/related 消息的每个片段。mime:part 中出现的 MIME 元素指定片段的具体 MIME 类型。如果 mime:part 中出现了多个 MIME 元素,则表示可以使用其中任意一个。
soap:body
将 MIME 绑定用于 SOAP 请求时,把 soap:body 元素作为 MIME 元素使用是合法的。它表示内容类型是“text/xml”,且包含在一个 SOAP 信包中。
mime:mimeXml
对于不符合 SOAP(没有 SOAP 信包)但具有特定架构的 XML 有效负载,可以使用 mime:mimeXml 元素来指定其具体架构。part 属性指定义根 XML 元素的具体架构的消息片段。如果消息只有一个片段,则可以省略 part 属性。片段则使用 element 属性(对于简单片段)或 type 属性(对于复合片段)来引用具体的架构(请参见第 2.3.1 节)。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/33547/showart_354259.html |
|