soap和WSDL

binding 元素有两个属性 - name 属性和 type 属性。
name 属性定义 binding 的名称,而 type 属性指向用于 binding 的端口,在这个例子中是 "glossaryTerms" 端口。
soap:binding 元素有两个属性 - style 属性和 transport 属性。
style 属性可取值 "rpc" 或 "document"。在这个例子中我们使用 document。transport 属性定义了要使用的 SOAP 协议。在这个例子中我们使用 HTTP。
operation 元素定义了每个端口提供的操作符。

对于每个操作,相应的 SOAP 行为都需要被定义。同时您必须如何对输入和输出进行编码。在这个例子中我们使用了 "literal"。[1]

 

 

 

 

 

1、 SOAP绑定

WSDL包括用于SOAP 1.1终端的绑定,此绑定支持下列协议信息规范:
  需要指示出此绑定是针对SOAP 1.1协议的。
  为SOAP 终端指定地址的方式。
  用于SOAPAction HTTP头的URI,而此头是绑定了SOAP 的HTTP头。
  作为SOAP封装一部分传送的头列表定义。

SOAP绑定使用下列扩展元素对WSDL进行扩展:(注意黑体标注)

<definitions .... >
<binding .... >
<soap:binding style="rpc|document" transport="uri"> …1
<operation .... >
<soap:operation soapAction="uri" style="rpc|document"> …2
<input>
<soap:body parts="nmtokens" use="litera|encoded"
encodingStyle="uri-list" namespace="uri">…3
<soap:header message="qname" fault="qname"/> …4
</input>
<output>
<soap:body parts="nmtokens" use="litera|encoded"
encodingStyle="uri-list"? namespace="uri"/>…3
<soap:header message="qname" fault="qname"/> …4
</output>
<fault>
<soap:fault name="nmtoken" use="litera|encoded"
encodingStyle="uri-list" namespace="uri">…5
</fault>
</operation>
</binding>
<port .... >
<soap:address location="uri"/> …6
</port>
</definitions>

1)soap:binding
  SOAP绑定元素的目的是指出绑定是针对SOAP协议格式的:Envelope, Header 和 Body。这个元素没有对编码或消息格式进行声明。在使用SOAP绑定时必须指出soap:binding元素。

2)soap:operation
  soap:operation 元素从整体上为操作提供信息。

soapAction属性为此操作的SOAPAction头指定了值。此URI应当被直接用作SOAPAction头的值,在作出请求时不要试图将一个相对URI变成绝对URI。对于绑定了SOAP的HTTP协议来说,此值是必需的(它没有默认值)。对于其它的SOAP协议绑定,决对不能为其指定值,而soap:operation元素可以被忽略。

style属性指出操作是面向RPC(消息包含参数和返回值)的还是面向文档的(消息包含文档)。此信息可用于选择合适的编程模板。此属性的值将影响SOAP消息体的构建方式,如果没有指定值,它默认为soap:binding元素中指定的值。如果soap:binding元素没有指定样式,它假定为"文档"。

3)soap:body
  soap:body元素指出了消息部分应如何在SOAP Body元素中表现。
  消息的各个部分可以是抽象的类型定义,也可以是具体的模式定义。如果是抽象定义,根据编码格式定义的一套规则将对类型进行序列化。使用URI列表可以对每种编码格式进行标识,就象在SOAP规范中的那样。由于某些编码格式如SOAP编码允许某种给定的抽象类型的消息格式发生变化,那么读者应理解所有的格式变化:"读者决定正确性"。为了避免对所有变化不必要的支持,可以对消息的定义具体化,然后暗示它的原始编码格式(如果存在)。在这种情况下,消息的创建者必须严格遵循特定的规范:"作者决定正确性"。
  soap:body提供的信息用于决定如何在SOAP消息的Body元素中组合不同的消息部分。soap:body元素可以用在面向RPC的消息也可以用在面向文档的消息中,但是封装操作的格式对Body节如何构建有重要影响:
  如果操作格式是RPC,那么每个部分将是一个参数,或者是一个返回值,并且它们出现在body中的wrapper元素内。wrapper元素的名字与操作的名字相同,并且它的名称空间是namespace属性的值。每个消息部分(参数)在封装器下出现,它是由与调用中相应参数名称相同的存储器表示的。各部分以与调用参数相同的顺序进行排列。
  如果操作格式是文档,那么就没有额外的封装器(wrappers),消息的parts直接出现在SOAP Body元素中。
  在定义Body的内容和参数存储器元素时使用了相同的机制。

4)soap:header
  soap:header元素允许在SOAP封装的头元素中对将要传送的头进行定义。它模拟了soap:body元素。并不需要使用soap:header费力地列出出现在SOAP封装中的所有头元素。例如,对WSDL的扩展暗示特定的头应加入到实际的有效负荷中,此时就不需要列出所有的头。

5)soap:fault
  soap:fault元素指出了SOAP Fault Details元素的内容,它模仿了soap:body元素。

6)soap:address
  SOAP地址绑定用于为端口指定地址。使用SOAP绑定的端口必须指定一个确切的地址,为地址指定的URI配制必须与soap:binding指定的传输相对应。



 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值