SoapUI調用webservice實現的兩種方式


SoapUI用來做測試,已經是很多人做過的事情了,而且網上教程也很多。不過還是寫下來,對比webservice協議與http協議腳本編寫的不同。

首先測接口得有一個服務,剛好筆者所在項目做ESB集成。就順道用一下工作環境截幾張圖。

業務模型:

  從客戶端post一個字符串給ESB服務器,ESB服務器收到該請求后,返回一個在原字符串前添加一個Hello。

服務器的地址:http://10.3.49.105/soa-web/proxy/ws/AAA-TEST-BBB/xfiresb/services/HelloService

請求的報文

添加三個head
   “Svc_Inbound","TEST"
   ”Svc_ServiceCode","AAA-TEST-BBB"
   "Svc_Version","1"
報文正文
<?
xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://service.xfiresb.com"> <soapenv:Header/><soapenv:Body> <ser:sayHi> <ser:in0>this is a request</ser:in0> </ser:sayHi> </soapenv:Body></soapenv:Envelope>

服務器返回的報文

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soap:Body>
      <ns1:sayHiResponse xmlns:ns1="http://service.xfiresb.com">
         <ns1:out>Hello this is a request</ns1:out>
      </ns1:sayHiResponse>
   </soap:Body>
</soap:Envelope>

1.通過SOAP協議實現

功能的實現,首先用soapui來實現,打開soapui ,file---new soap project

 在工程創建彈出框輸入WSDL地址,輸入工程名稱,點擊OK

工程 地址:http://10.3.49.105/soa-web/proxy/ws/AAA-TEST-BBB/xfiresb/services/HelloService?wsdl

雙擊Request 1,在創建工程時創建的默認請求,雙擊后會看到該請求內容。編輯request如下,在head標簽添加我們的服務需要的head內容:

這樣直接點擊運行標簽,則可直接調用該服務。

這樣子就實現了soapui對接口的調用。

2.通過http協議實現

webservice是可以通過多種協議來實現的,但最常用的是http協議,就第一部分的內容,可以通過查看Raw標簽查看http請求與返回信息

從上圖可以看出,其實SOAP協議其實是通過http協議來傳遞數據的,而soapui也可以創建http協議來實現接口的調用

創建一個REST工程,直接在彈出框中粘貼url地址(注是server地址,而不是wsdl地址)

構建一個http請求

如上圖,頭文件全部加上(其實部分head不是必填項,但為了與webservice保持完全一致,這里全部添加上了)

可以看到,這樣子實現的http請求也是OK的。

SOAP協議使用的是xml報文,而http協議,則是標准的http報文,只要符合http協議的傳遞數據,均可以采用http協議來實現數據通信。

原理搞懂了,基本上也沒什么難的,可以從接口的定義去理解接口的本質。

這樣就實現了SoapUI兩種實現接口的調用。對於有公開的wsdl接口的可以通過Soap協議調用,而對於沒有公開的WSDL的接口,則可以通過http來實現。

現在數據傳遞主要是xml報文與json,而json的數據傳遞更多則是通過http來實現。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM