SoapUI - WSDL

WSDL代表Web服务描述语言.它是描述Web服务的标准格式. WSDL由Microsoft和IBM联合开发. WSDL发音为'wiz-dull',拼写为'WSD-L'.

WSDL─简史

WSDL 1.1已提交作为Ariba,IBM和Microsoft的W3C Note,用于描述2001年3月W3C XML活动XML协议的服务.

WSDL 1.1尚未得到万维网联盟的认可( W3C),但它刚刚发布了2.0版的草案,这将是一个推荐(官方标准),因此得到了W3C的认可.

WSDL─注意事项

WSDL是一种基于XML的协议,用于在分散和分布式环境中进行信息交换. WSDL的其他一些功能如下:<

  • WSDL定义描述了如何访问Web服务以及执行哪些操作它将执行.

  • 这是一种描述如何与基于XML的服务进行交互的语言.

  • 它是通用描述,发现和集成(UDDI)的一个组成部分,UDDI是一个基于XML的全球商业注册中心.

  • WSDL是UDDI使用的语言.

WSDL用法

WSDL通常与SOAP结合使用和XML Schema通过Internet提供Web服务.连接到Web服务的客户端程序可以读取WSDL以确定服务器上可用的功能.使用的任何特殊数据类型都以XML Schema的形式嵌入到WSDL文件中.然后,客户端可以使用SOAP实际调用WSDL中列出的函数之一.

理解WSDL

WSDL将Web服务分解为三个可定义的特定可识别元素.

可以单独定义的WSDL的三个主要元素是 :

  • 类型

  • 操作

  • 绑定

WSDL文档有各种元素,但它们包含在这三个主要元素中,可以作为单独的文档开发,然后它们可以组合或重用以形成完整的WSDL文件.

在本教程中,我们遵循CurrencyConverter WSDL: http://www.webservicex.net/CurrencyConvertor.asmx?wsdl

格式和元素

CurrencyConverter WSDL将如下所示 :

货币转换器


响应


绑定元素

WSDL─端口类型

< portType> element结合了多个消息元素,形成完整的单向或往返操作.例如,< portType>可以将一个请求和一个响应消息组合成单个请求/响应操作.这在SOAP服务中最常用. portType可以定义多个操作.

示例

端口类型

  • portType元素定义一个名为ConversionRate的操作.

  • 该操作由单个输入组成message ConversionRateHttpPostIn.

  • 输出消息的操作是ConversionRateHttpPostOut.

操作模式

WSDL支持四种基本操作模式 :

单向

服务接收消息.因此,操作具有单个输入元件.单向操作的语法是 :

<wsdl:definitions .... >  
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken"> 
         <wsdl:input name = "nmtoken"? message = "qname"/> 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

请求─响应

服务收到消息并发送响应.因此,操作有一个输入元素,后跟一个输出元素.要封装错误,还可以指定可选的fault元素.请求 - 响应操作的语法是 :

<wsdl:definitions .... > 
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> 
         <wsdl:input name = "nmtoken"? message = "qname"/> 
         <wsdl:output name = "nmtoken"? message = "qname"/> 
         <wsdl:fault name = "nmtoken" message = "qname"/>* 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

征集─回复

服务发送消息并收到回复.因此,操作有一个输出元素,后跟一个输入元素.要封装错误,还可以指定可选的fault元素.请求 - 响应操作的语法是 :

<wsdl:definitions .... > 
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken" parameterOrder = "nmtokens"> 
         <wsdl:output name = "nmtoken"? message = "qname"/> 
         <wsdl:input name = "nmtoken"? message = "qname"/> 
         <wsdl:fault name = "nmtoken" message = "qname"/>* 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

通知

服务发送消息.因此,该操作具有单个输出元件.以下是通知操作的语法 :

<wsdl:definitions .... > 
   <wsdl:portType .... > * 
      <wsdl:operation name = "nmtoken"> 
         <wsdl:output name = "nmtoken"? message = "qname"/> 
      </wsdl:operation> 
   </wsdl:portType > 
</wsdl:definitions>

WSDL─Binding&服务

< binding> 元素提供了有关如何通过网络实际传输 portType 操作的具体细节.

  • 绑定可以通过多种传输提供,包括HTTP GET,HTTP POST或SOAP.

  • 绑定提供了有关用于传输portType操作的协议的具体信息.

  • 绑定提供信息该服务位于.

  • 对于SOAP协议,绑定是< soap:binding>,并且传输是基于HTTP协议的SOAP消息./p>

  • 您可以为单个portType指定多个绑定.

绑定服务

服务

< service> 元素定义Web服务支持的端口.对于每个支持的协议,都有一个端口元素. service元素是端口的集合.

Web服务客户端可以从服务元素中学习以下内容 :

  • 访问服务的位置,

  • 通过哪个端口访问Web服务,

  • 如何定义通信消息.

service元素包含一个文档元素,用于提供人类可读的文档.

<wsdl:service name = "CurrencyConvertor">
   <wsdl:port name = "CurrencyConvertorSoap" binding = "tns:CurrencyConvertorSoap">
      <soap:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port>
   <wsdl:port name = "CurrencyConvertorSoap12"binding = "tns:CurrencyConvertorSoap12>
      <soap12:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port>
   <wsdl:port name = "CurrencyConvertorHttpGet" binding = "tns:CurrencyConvertorHttpGet">
      <http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port>
   <wsdl:portname = "CurrencyConvertorHttpPost"binding = "tns:CurrencyConvertorHttpPost">
      <http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx" />
   </wsdl:port> 
</wsdl:service>