使用JDK開發WebService-客戶端建立
一、序言
上篇,我已經寫了一個簡單的WebService伺服器。看起來貌似不錯,但我們真正的目的是想通過程式設計的方式來訪問伺服器,而不是通過eclipse帶的Web Service瀏覽器來訪問。伺服器我們是一行行程式碼敲出來的,客戶端同樣我們也可以一步步設計出來,但是相對繁瑣。JDK裡面有個工具wsimport.exe,可以幫我們生成客戶端程式碼,節省了很多時間。
二、使用JDK生成WebService客戶端
首先,我們需要再建立一個客戶端工程------jdkclient。建立好以後複製一下客戶端工程的src目錄路徑
執行命令提示符(win+r>>>cmd),先進入自己客戶端工程所在的碟符,在進入src目錄,dos下輸入cd 然後把複製好的src目錄路徑貼上到命令提示符中(dos下不能使用ctrl+v快捷鍵,在dos下右擊會出現貼上選項),進入到src下後,輸入wsimport,看看是否識別,如果不能識別命令,檢查下系統的環境變數是否配好。
生成客戶端的命令是wsimport -keep url //url為wsdl路徑。
把伺服器執行起來,dos下輸入生成指令:wsimport -keep http://localhost:8080/service/HelloService?wsdl
注意三點:
·伺服器要處於啟動狀態
·-keep前後有空格
·?wsdl不要忘記
執行後,如出現下圖介面,說明已經自動生成客戶端程式碼了。eclipse客戶端工程上右擊,重新整理就可以看到生成的客戶端程式碼了。
使用JDK1.8+MyEclipes 生成的程式碼可能報錯。這是MyEclipse的一個bug,更換一個低版本的JDK就可以了
三、編寫客戶端呼叫方法
新建一個類,呼叫生成的getHelloServiceImplPort()方法,執行mian方法,檢視控制檯和伺服器的控制檯,看是否正確列印。
import com.gpj.service.HelloServiceImpl; import com.gpj.service.HelloServiceImplService; public class ClientTest { public static void main(String[] args) { HelloServiceImplService factory = new HelloServiceImplService(); HelloServiceImpl helloWS = factory.getHelloServiceImplPort(); String result = helloWS.sayHello("gpj"); System.out.println("client "+result); } }