XML WSDL
-
定义和使用
WSDL 代表 Web 服务描述语言WSDL 用于描述 Web 服务WSDL 用 XML 编写从2007年6月26日开始,WSDL 是 W3C 的建议。WSDL 文档描述了 Web 服务。 它使用以下主要元素指定服务的位置以及服务的方法:元素 描述 <types> 定义Web服务使用的(XML Schema)数据类型 <message> 定义每个操作的数据元素 <portType> 描述可以执行的操作以及所涉及的消息。 <binding> 定义每种端口类型的协议和数据格式 WSDL文档的主要结构如下所示:<definitions> <types> 数据类型定义........ </types> <message> 通讯数据的定义。... </message> <portType> 操作集... </portType> <binding> 协议和数据格式规范。 </binding> </definitions>
这是WSDL文档的简化部分:<message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType>
在此示例中,<portType>元素将 "glossaryTerms" 定义为端口的名称,将 "getTerm" 定义为操作的名称。"getTerm" 操作具有一个名为 "getTermRequest" 的输入消息和一个名为 "getTermResponse" 的输出消息。<message>元素定义每个消息的部分以及相关的数据类型。 -
<portType>元素
<portType> 元素定义 Web 服务,可以执行的操作以及所涉及的消息。请求-响应类型是最常见的操作类型,但是 WSDL 定义了四种类型:类型 描述 One-way 该操作可以接收消息,但不会返回响应 Request-response 该操作可以接收请求,并返回响应 Solicit-response 该操作可以发送请求,并将等待响应 Notification 该操作可以发送消息,但不会等待响应 -
WSDL 单向操作
单向操作示例:<message name="newTermValues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="setTerm"> <input name="newTerm" message="newTermValues"/> </operation> </portType>
在上面的示例中,portType "glossaryTerms" 定义了一种称为 "setTerm" 的单向操作。"setTerm" 操作允许使用带有输入参数 "term" 和 "value" 的 "newTermValues" 消息输入新的词汇表术语消息。 但是,没有为该操作定义输出。 -
WSDL请求-响应操作
请求-响应操作示例:<message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType>
在上面的示例中,portType "glossaryTerms" 定义了一个名为 "getTerm" 的请求-响应操作。"getTerm” 操作需要带有参数 "term" 的输入消息 "getTermRequest",并返回带有参数 "value" 的输出消息 "getTermResponse"。 -
WSDL绑定到SOAP
WSDL 绑定定义 Web 服务的消息格式和协议详细信息。请求-响应操作示例:<message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> <binding type="glossaryTerms" name="b1"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <operation> <soap:operation soapAction="http://example.com/getTerm"/> <input><soap:body use="literal"/></input> <output><soap:body use="literal"/></output> </operation> </binding>
binding(绑定)元素具有两个属性-名称和类型。name 属性(可以使用任意名称)定义绑定的名称,type 属性指向绑定的端口,在本例中为 "glossaryTerms" 端口。soap:binding 元素具有两个属性-样式和传输。样式属性可以是 "rpc" 或 "document"。 在这种情况下,我们使用文档。 transport 属性定义要使用的SOAP协议。 在这种情况下,我们使用 HTTP。operation 元素定义 portType 公开的每个操作。对于每个操作,必须定义相应的 SOAP 操作。 您还必须指定输入和输出的编码方式。 在这种情况下,我们使用“文字”。