本篇文章就通過寫一個(gè)獲取城市天氣情況的程序,學(xué)會(huì)調(diào)用webService。webService分客戶端和服務(wù)端的,本篇就寫客戶端的調(diào)用套路。服務(wù)篇的就下次再寫。嘻嘻~求關(guān)注。
本章內(nèi)容:
- 介紹webService
- 程序webService的開始編寫(只需要寫4句就可以實(shí)現(xiàn)。)
- webService客戶端的總結(jié)
webService的介紹
- Web service讓你的網(wǎng)站可以使用其他網(wǎng)站的資源。
- webService 應(yīng)用還是比較多的,例如:公司需要兩個(gè)系統(tǒng)之間的數(shù)據(jù)需要有交互,那你不可能相互訪問對(duì)方的數(shù)據(jù)庫吧(這樣一聽就很笨)。所以可以用webService來進(jìn)行數(shù)據(jù)的調(diào)用了。
- 調(diào)用webservice服務(wù)的三種途徑,Endpoint ,Disco ,WSDL。本次程序是用wsdl來調(diào)用。
webService:獲取城市天氣情況的程序
開始注意:
- 編寫一個(gè)獲取城市天氣情況的程序來感受一下webService的魅力。
- 編程工具時(shí)idea,因?yàn)閕dea自帶插件可以生成webService的代理類。
- 整個(gè)程序過程:

過程
開始編程
-
idea可以之間建立一個(gè)webService項(xiàng)目,如圖,但這次我是建立一個(gè)普通項(xiàng)目來顯示,因?yàn)橐话愣伍_發(fā)的程序,需要用webService的時(shí)候,就跟在普通項(xiàng)目調(diào)用webService一樣。
深度截圖_選擇區(qū)域_20170816191553.png 建立好一個(gè)普通項(xiàng)目。
建立好一個(gè)普通項(xiàng)目,需要導(dǎo)入webService所需要的jar包。如圖:

所需要的包.jpg

深度截圖_選擇區(qū)域_20170816191829.png

深度截圖_選擇區(qū)域_20170816192319.png
-
利用idea自帶的webService插件,生成代理類
步驟:右鍵項(xiàng)目名稱的文件->最下面的選項(xiàng)WebServices
image.png

深度截圖_選擇區(qū)域_20170816192458.png
- 選擇后,就會(huì)彈出一個(gè)框,如圖:
天氣預(yù)告的webService地址

深度截圖_選擇區(qū)域_20170816192744.png
生成后就會(huì)有幾個(gè)類

深度截圖_選擇區(qū)域_20170816192822.png
- 分析生成的代理類:
雖然生成了很多類,你不用慌,因?yàn)楹芏囝惗际沁壿嫶a,不需要我們?nèi)ダ斫猓{(diào)用。我們只需要掌握兩個(gè)接口就可以了
- XXXService接口:實(shí)現(xiàn)該接口,綁定了服務(wù)的名稱,地址,端口等詳細(xì)資料。(其實(shí)就是建立對(duì)象,讓構(gòu)造方法綁定一些必須要的信息。)
- XXXPortType接口:實(shí)現(xiàn)該接口,通過 SOAP 協(xié)議把操作請(qǐng)求發(fā)送到服務(wù)器,并把返回信息轉(zhuǎn)化為 Java 對(duì)象。(其實(shí)就是發(fā)送參數(shù)過去,獲取到數(shù)據(jù)的)
6.編寫代碼,調(diào)用接口。
- 因?yàn)榻涌诓荒軐?shí)例化,所有肯定有實(shí)現(xiàn)類,所有在該代理類中,
WebtherWebServiceLocator實(shí)現(xiàn)了XXXService接口。有趣的是,XXXservice接口的方法返回的類型時(shí)XXXPortType接口。所有你new一個(gè)對(duì)象處理,就已經(jīng)把兩個(gè)接口都用上了,接下來就直接傳參數(shù)獲取數(shù)據(jù)就可以了。 - 不理解?看代碼

image.png
- 傳入?yún)?shù),獲取數(shù)據(jù)。
- 剛剛分析了兩個(gè)接口的作用,第一個(gè)接口是綁定端口等,第二個(gè)接口是我們的重點(diǎn),里面的方法時(shí)用來調(diào)用傳參和調(diào)用數(shù)據(jù)的。

image.png
- 部分方法注釋(代碼已經(jīng)放到我github)

image.png
- 代碼

image.png

image.png
webService總結(jié)
- wenService客戶端代理類已經(jīng)幫我們完成了99%的工作,我們只需要正確建立對(duì)象,用方法傳參,獲取數(shù)據(jù)就可以了。
PS:
- 代碼量很少,很正常啊,從接口拿個(gè)數(shù)據(jù)需要寫幾百行代碼才不正常。
- 本篇只是講解如何調(diào)用接口,webService還有服務(wù)端的,就是傳送數(shù)據(jù)的,下一篇將會(huì)講解如何使用。
- 以后還會(huì)對(duì)webService深入了解,講解soap協(xié)議到底時(shí)什么。。。。
- 總之,關(guān)注我就對(duì)了。
- 謝謝觀看。謝謝評(píng)點(diǎn)。

