WSDL 指网络服务描述语言 (Web Services Description Language)。
WSDL 是一种使用 XML 编写的文档。这种文档可描述某个 Web service。它可规定服务的位置,以及此服务提供的操作(或方法)。
服务描述的相关组件
<wsdl:import> 引用另一个 文档,将其描述加到本文档中。
<wsdl:types> 定义消息交换所使用的 XML 类型和元素。
<wsdl:message> 定义一个实际的消息,包含 XML 类型或元素。
<wsdl:portType> 定义一个服务所实现的操作抽象集。
<wsdl:binding> 定义 <wsdl:portType> 的一个使用特定协议和格式的具体实现。
<wsdl:service> 定义一个服务整体,包括一个或多个包含 <wsdl:binding> 元素访问信息的 <wsdl:port> 元素。
服务描述的主要结构
<definitions>
<types>
definition of types........
</types>
<message>
definition of a message....
</message>
<portType>
definition of a port.......
</portType>
<binding>
definition of a binding....
</binding>
</definitions>
详细说明
1、WSDL 端口
<portType> 元素是最重要的 WSDL 元素。
它可描述一个 web service、可被执行的操作,以及相关的消息。
可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。
2、WSDL 消息
<message> 元素定义一个操作的数据元素。
每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。
3、WSDL types
<types> 元素定义 web service 使用的数据类型。
为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。
4、WSDL Bindings
<binding> 元素为每个端口定义消息格式和协议细节。
WSDL文档示例
下例是一个提供股票报价的简单Web服务的 WSDL 定义。该服务支持名为 GetLastTradePrice 的单一操作,这个操作是通过在 HTTP 上运行 SOAP 1.1 协议来实现的。该请求接受一个类型为字符串的 tickerSymbol,并返回类型为浮点数的价格。
<?xml version="1.0"?>
<definitions name="StockQuote"
targetNamespace="http://example.com/stockquote.wsdl"
xmlns:tns="http://example.com/stockquote.wsdl"
xmlns:xsd1="http://example.com/stockquote.xsd"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/1999/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePriceResult">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
上面这部分是数据类型的定义,其中为定义了两个元素的结构:
TradePriceRequest(交易价格请求): 将该元素定义为包含一个字符串元素(tickerSymbol)的复合类型元素。
TradePriceResult(交易价格): 将该元素定义为一个包含一个浮点数元素(price)的复合类型元素。
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePriceResult"/>
</message>
这部分是消息格式的抽象定义,其中定义了两个消息格式:
GetlastTradePriceInput(获取最后交易价格的请求消息格式): 由一个消息片断组成,该消息片断的名字是body,包含的具体元素类型是TradePriceRequest。(前面已经定义过了)
GetLastTradePriceOutput(获取最后交易价格的响应消息格式) : 由一个消息片断组成,该消息片断的名字是body,包含的具体元素类型是TradePriceResult。(前面已经定义过了)
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
这部分定义了服务访问点的调用模式的类型,表明StockQuoteService的某个入口类型是请求/响应模式,请求消息是GetlastTradePriceInput,而响应消息是GetLastTradePriceOutput。
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal" namespace="http://example.com/stockquote.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="literal" namespace="http://example.com/stockquote.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</soap:operation>
</operation>
</soap:binding>
</binding>
这部分将服务访问点的抽象定义与SOAP HTTP绑定,描述如何通过SOAP/HTTP来访问按照前面描述的访问入口点类型部署的访问入口。其中规定了在具体SOAP调用时,应当使用的soapAction是"http://example.com/GetLastTradePrice",而请求/响应消息的编码风格都应当采用SOAP规范默认定义的编码风格" http://schemas.xmlsoap.org/soap/encoding/"。
<service name="StockQuoteService">
<documentation>股票查询服务</documentation>
<port name="StockQuotePort" binding="tns:StockQuoteBinding">
<soap:address location="http://example.com/stockquote"/>
</port>
</service>
</definitions>
这部分是具体的Web服务的定义,在这个名为StockQuoteService的Web服务中,提供了一个服务访问入口,访问地址是"http://example.com/stockquote",使用的消息模式是由前面的binding所定义的。
按照这个WSDL文档的描述,在具体Web服务的使用中,具体发生的SOAP交互可能如下面所示:
SOAP消息请求:
POST /StockQuote HTTP/1.1
Host: example.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://example.com/GetLastTradePrice"
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:TradePriceRequest xmlns:m="http://example.com/stockquote.xsd">
<tickerSymbol>MSFT</tickerSymbol >
</m:TradePriceRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP消息响应:
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:TradePriceResult xmlns:m=" http://example.com/stockquote.xsd ">
<price>74.5</price>
</m:TradePriceResult >
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
分享到:
相关推荐
### XML-WSDL基础知识 #### 一、Schema **1.1 XMLSchema简介** - **1.1.1 什么是XMLSchema?** - XMLSchema是一种用于描述XML文档结构的语言,它定义了文档中的元素和属性的数据类型以及这些元素和属性应该如何...
Web服务描述语言(WSDL,Web Services Description Language)是一种基于XML的应用,主要用于精确地描述Web服务,以便客户端能够发现并调用这些服务。...理解并熟练运用WSDL是开发和使用Web服务的基础。
WSDL(Web Services Description Language)是一种基于XML的语言,用于描述网络服务。它是一种标准化的方法,用于描述网络服务的使用方式,以便客户端应用程序能够发现、调用和与网络服务进行交互。WSDL文件为服务的...
1. WSDL基础 WSDL文件是一个XML文档,它描述了服务的位置(endpoint)、使用的消息格式(message)和服务提供的操作(operation)。WSDL包含以下几个关键元素: - `service`:定义服务的端点,即服务在哪里提供。 ...
1. **WSDL基础**: WSDL是一种XML格式的规范,用于描述Web服务的接口,包括服务的地址、消息结构以及如何调用这些服务。一个WSDL文件通常由以下部分组成: - **服务定义**:包括服务的命名空间、服务名和服务端点...
1. **WSDL基础**:理解WSDL文件的结构,包括服务端点(endpoint)、消息类型(message)、操作(operation)和绑定(binding)等元素。 2. **SOAP协议**:WSDL常与SOAP(Simple Object Access Protocol)协议配合...
wsdl基础教程,学会使用开发维护,基础入门级
学习WSDL,首先需要掌握XML的基础知识,理解其语法和结构。然后,深入研究WSDL的各个元素,理解它们的作用和关联。通过阅读和分析压缩包中的WSDL实例,可以加深理解,并尝试使用工具创建自己的WSDL文档,实践服务的...
在SOA中,服务是业务功能的原子单元,可以通过接口来访问,而接口通常使用WSDL来定义。 **WSDL(Web Services Description Language):** WSDL是一种XML格式,用于描述Web服务及其接口。它定义了服务提供者如何...
WSDL文件是Web服务客户端和服务提供者之间进行交互的基础,确保双方能够正确理解和调用服务。 本实例将深入探讨一个简单的WSDL文件结构及其组成部分,帮助读者理解如何创建和解析WSDL文件,以便更好地利用Web服务。...
总的来说,这个压缩包提供了一套完整的ONVIF服务接口描述,对于Java开发者来说,是实现ONVIF功能的基础。通过理解和使用这些WSDL文件,开发者能够创建出与各种ONVIF设备通信的应用,实现网络视频监控系统中的设备...
wsdl用于接口测试的基础文件
ONVIF(Open Network Video Interface Forum)是一种开放的国际标准,旨在推动网络视频监控设备的互操作性。这个协议定义了一系列接口,使...这些文件为开发者提供了详细的接口规范,是构建基于ONVIF的解决方案的基础。
WSDL 基础连接器 为什么要构建 WSDL 基础连接器? 如果您使用过 mule,您就会知道其中有很多很棒的工具,例如可以帮助您使用 wsdl 基础服务,甚至是,那么……为什么还要构建连接器呢? 该工具非常擅长使用服务,...
2. **在线教程**:许多网站提供WSDL的基础教程和进阶教学,如W3Schools(https://www.w3schools.com/xml/wsdl_intro.asp)。 3. **论坛讨论**:Stack Overflow等社区中有大量关于WSDL的问题和解答。 4. **书籍**:...
SOAP是Web服务通常使用的传输协议,用于在HTTP、SMTP等基础协议上封装XML消息。WSDL文件中定义的服务操作通常对应于SOAP消息中的方法。 3. **生成客户端代理类** 要调用Web服务,开发者通常需要一个客户端代理类...
消息定义是 WSDL 中的基础组成部分,用于描述请求和响应的数据结构。例如,下面的 SumRequest 和 SumResponse 定义了两个整数相加的操作: ```xml ``` #### 异常处理 为了处理可能...
WSDL文件是服务消费者与服务提供者之间交互的基础,使得开发者能够理解服务的输入、输出、错误处理等信息。 2. **Java转WSDL的背景** 在Java环境中,开发Web服务时,通常先编写实现所需功能的Java类或接口,然后...
这些类通常包括服务接口、消息实体、协议绑定类等,它们构成了与Web服务交互的基础。 3. **构建SOAP请求**:通过生成的Java类,开发者可以实例化对象,填充参数,然后由工具自动生成符合SOAP协议的请求消息。 4. *...
教程会详细讲解WSDL的基础概念、语法结构,以及如何创建和使用WSDL文档。通过这个教程,你可以深入理解WSDL的核心特性,掌握如何编写和应用WSDL来构建和消费Web服务。 在学习过程中,你将了解如何定义服务接口,...