兩天入門WebService

WebService總結

1、WebService是什麼?

1.1 基於Web的服務,服務器端整出一些資源讓客戶端應用訪問

1.2 一個跨語言、跨平臺的規範

1.3 多個跨語言、跨平臺的應用間通信整合的方案

2、幾個重要術語

2.1 WSDL: WebService definition language

直譯:WebService定義語言

1、對應一種類型的文件:.wsdl

2、定義了WebService的服務器端與客戶端應用交互傳遞請求和相應數據的格式和方式

3、一個WebService對應一個唯一的wsdl文檔

2.2 SOAP: simple object access protocal

直譯:簡單對象訪問協議

1、是一種簡單的、基於HTTP和XML的協議,用於在WEB上交換結構化的數據。

2、SOAP信息:請求消息和響應消息

3、HTTP和XML

2.3 SEI:WebService EndPoint Interface

直譯:WebService的終端接口

就是WebService服務器端用來處理請求的接口

2.4 CXF:Celt+XFire

一個apache的用於開發服務器端和客戶端的框架

3、HTTP協議

3.1 HttpRequest

請求的格式分成三個部分:請求行、消息頭、消息正文

CR:回車(\r)

LF:換行(\n)

1、請求行:  method    url             protocal
例如:      Get       /index.html     HTTP/1.1CRLF

2、消息頭
name1:value1CRLF
name2:value2CRLF
...
CRLF     單獨放送一個CRLF表示消息頭全部發送完畢

3、消息正文(略)

3.2 HttpResponse

請求的格式分成三個部分:狀態行、響應頭、響應正文

1、狀態行:    協議版本        狀態代碼        狀態描述
例如:        HTTP/1.1       200            OKCRLF

2、響應頭(與消息頭格式相同)

3、響應正文(字節數據,是實際數據)

4、用Eclipse演示WebService

1、javaEE模式下,點擊WebService瀏覽器(小地球右邊的那個按鈕)

2、點擊右邊的wsdl Page (五角星左邊的那個按鈕)

3、點擊WSDL Main

4、把複製好的wsdl url地址粘貼過來例如:
http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

5、go

6、add

7、source

5、開發WebService

5.1 使用jdk開發

1)開發服務器端

webservice編碼:

-- @WebService(SEI和SEI的實現類)

-- @WebMethod(SEI中的所有方法)

發佈WebService

-- EndPoint終端  發佈WebService

request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://day01_webservice_ws.atguigu.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <soapenv:Body>
- <q0:introduce>
<arg0>Jack</arg0> 
<arg1>18</arg1> 
</q0:introduce>
</soapenv:Body>
</soapenv:Envelope>

response:
- <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
- <S:Body>
- <ns2:introduceResponse xmlns:ns2="http://day01_webservice_ws.atguigu.cn/">
<return>I'm Jack,and I'm 18years old.</return> 
</ns2:introduceResponse>
</S:Body>
</S:Envelope>


2)開發客戶端
在客戶端項目的src目錄下cmd 執行 
wsimport -keep url
例如:wsimport -keep http://localhost:8989/AAAA-day01-WebService/hellows?wsdl

這樣會自動生成代碼

編寫測試代碼

5、2 使用Eclipse的Tcp_IP工具(端口轉發)監聽WebService請求


啓動起來 這裏配置了8088會轉發到8089

本地wsdl文件自動生成代碼


5.3 編寫天氣預報查詢WebService

如果是.net寫的WebService會出現問題

解決方案:
1、將對應的wsdl文件保存到本地
2、修改wsdl文檔的部分內容
  將<s:element ref="s:schema" /><s:any />替換成<s:any minOccurs="2" maxOccurs="2"/>

5.4 編寫手機號碼歸屬地查詢WebService


5.5 編寫中英雙向翻譯WebService


6、wsdl文檔深入分析

6、1 文檔結構

6.2文檔結構圖

6.3 重要標籤的說明

6.4演示cxf框架

E:\JSD1708HY\APP\tts9\apache-cxf-2.5.9\bin   有一個wsdl12java



7、CXF支持的數據類型

--基本類型
--引用類型
	--String
	--集合:List、Set、Map
	--自定義類型:Student

8、一次 Web service 請求的流程

9、WebService面試題

1、webservice相當於 HTTP+XML   +schema(?)

2、wsdl是什麼
直譯:WebService定義語言,對應一種類型的文件:.wsdl,定義了WebService的服務器端與客戶端應用交互傳遞請求和相應數據的格式和方式,一個WebService對應一個唯一的wsdl文檔

3、如何發佈一個WebService
		定義SEI  @WebService @WebMethod
		定義SEI的實現    @WebService
		EndPoint.publish(url,SEI實現類)

4、如何請求一個WebService
	1)根據wsdl文檔生成客戶端代碼  
		jdk  ------wsport 
		cxf   ------- E:\JSD1708HY\APP\tts9\apache-cxf-2.5.9\bin\wsdl12java

	2)根據生成的代碼調用WebService

10、cxf的攔截器

10.1 攔截器 API

Interceptor(攔截器接口)
	AbstractPhaseInterceptor(自定義攔截器從此繼承)
	LoggingInInterceptor(系統日誌入攔截器類)
	LoggingOutInterceptor(系統日誌出攔截器類)

演示CXF的攔截器-----服務器端

演示CXF的攔截器-----客戶端

11、用 CXF 編寫基於 spring 的 web service

服務端




客戶端

結合Spring的情況下,如何自定義攔截器

1. Server 端

– 在 beans.xml 中,在 endpoint 中配置上入攔截器

2. Client 端

– 通過 Client 對象設置出攔截器

12、其他調用WebService的方式

12.1 Ajax調用WebService

獲取Ajax對象,因爲歷史原因需要區分瀏覽器


12.2 Jquery請求webservice

12.3 HttpURLConnection 調用 WebService


13、通過註解修改 wsdl 文檔










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章