- SoapUI 教程
- SoapUI - 首頁
- SOAP 基礎
- SOAP - 簡介
- SOAP - 訊息
- SOAP - REST 是什麼?
- SoapUI 基礎
- SoapUI - 簡介
- SoapUI - 功能
- SoapUI - NG Pro
- SoapUI - 安裝與配置
- SoapUI - WSDL
- SoapUI - 專案
- SoapUI - 測試套件
- SoapUI - 測試用例
- SoapUI - 測試步驟
- SoapUI - 請求與響應
- SoapUI - 屬性
- SoapUI - 屬性傳遞
- SoapUI - 日誌面板
- SoapUI - 斷言
- SoapUI - 故障排除
- SoapUI - 效能測試
- SoapUI - 負載測試
- SoapUI - RESTful Web 服務
- SoapUI - JDBC 連線
- SoapUI - JDBC 屬性
- SoapUI - JDBC 斷言
- SoapUI 有用資源
- SoapUI - 快速指南
- SoapUI - 有用資源
- SoapUI - 討論
SoapUI - WSDL
WSDL 代表 Web 服務描述語言 (Web Services Description Language)。它是一種描述 Web 服務的標準格式。WSDL 由微軟和 IBM 共同開發。WSDL 的發音為“wiz-dull”,拼寫為“W-S-D-L”。
WSDL ─ 簡史
2001 年 3 月,Ariba、IBM 和微軟將 WSDL 1.1 提交給 W3C 作為關於描述 W3C XML 活動中 XML 協議服務的 W3C 說明。
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
格式和元素
CurrencyConverter WSDL 看起來如下:
WSDL ─ 埠型別
<portType> 元素將多個訊息元素組合起來形成完整的單向或往返操作。例如,<portType> 可以將一個請求訊息和一個響應訊息組合成單個請求/響應操作。這最常用於 SOAP 服務。portType 可以定義多個操作。
示例
- portType 元素定義了一個名為 ConversionRate 的單個操作。
- 該操作包含單個輸入訊息 ConversionRateHttpPostIn。
- 輸出訊息的操作為 ConversionRateHttpPostOut。
操作模式
WSDL 支援四種基本的操作模式:
單向
服務接收訊息。因此,操作只有一個輸入元素。單向操作的語法為:
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken">
<wsdl:input name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
請求 ─ 響應
服務接收訊息併發送響應。因此,操作包含一個輸入元素,後跟一個輸出元素。為了封裝錯誤,還可以指定可選的錯誤元素。請求-響應操作的語法為:
<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>
請求 ─ 響應
服務傳送訊息並接收響應。因此,操作包含一個輸出元素,後跟一個輸入元素。為了封裝錯誤,還可以指定可選的錯誤元素。請求-響應操作的語法為:
<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> 元素提供有關portType 操作如何實際透過網路傳輸的具體詳細資訊。
繫結可以透過多種傳輸方式提供,包括 HTTP GET、HTTP POST 或 SOAP。
繫結提供有關使用哪個協議來傳輸 portType 操作的具體資訊。
繫結提供服務所在位置的資訊。
對於 SOAP 協議,繫結為
<soap:binding>,傳輸是在 HTTP 協議之上的 SOAP 訊息。您可以為單個 portType 指定多個繫結。
服務
<service> 元素定義 Web 服務支援的埠。對於每個支援的協議,都有一個埠元素。service 元素是埠的集合。
Web 服務客戶端可以從 service 元素中瞭解以下資訊:
- 訪問服務的位置;
- 透過哪個埠訪問 Web 服務;以及
- 通訊訊息是如何定義的。
service 元素包含一個 documentation 元素,用於提供人類可讀的文件。
<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>