1.准備要調用的webservice接口的wsdl地址,比如網上的查詢天氣接口:http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl
2.准備Axis2工具:將axis2-1.5.6-bin.zip解壓,然后進入bin目錄下;(工具可以在這個網址獲取:http://archive.apache.org/dist/axis/axis2/java/core/1.5.6/)
3.將wsdl文件保存到bin目錄下,如下;
4.在該目錄下打開cmd窗口(按住shift鍵,然后點擊鼠標右鍵,選擇“在此處打開命令窗口”),如下:
5.在黑窗口中輸入命令:wsdl2java -uri WeatherWS.wsdl -o 111(注意:111為輸出文件名,可以隨便輸),點擊回車生成客戶端調用代碼
6.當前目錄生成了一個文件夾名為“111”的文件,里面就是客戶端調用webservice服務的代碼啦,可以一步步點進去看看,生成了兩個java文件
7.在eclipse建一個項目,將代碼復制到src下(注意,要從src下拷貝)
8.在里面寫段代碼來測試調用接口,代碼如下:(注意,將axis2-1.5.6-bin\axis2-1.5.6\lib路徑下的jar包添加到eclipse項目下的libs文件夾里面)
package cn.com.webxml; import java.rmi.RemoteException; import cn.com.webxml.WeatherWSStub.ArrayOfString; import cn.com.webxml.WeatherWSStub.GetWeather; import cn.com.webxml.WeatherWSStub.GetWeatherResponse; public class Test { public static void main(String[] args) throws RemoteException { // 建立一個服務 WeatherWSStub service = new WeatherWSStub(); // 構造入參 GetWeather getWeather = new GetWeather(); getWeather.setTheCityCode("南京"); getWeather.setTheUserID(""); // 執行接口方法 GetWeatherResponse getWeatherResponse = service.getWeather(getWeather); // 打印返回的結果 ArrayOfString arrayOfString = getWeatherResponse.getGetWeatherResult(); String[] ss = arrayOfString.getString(); for (int i = 0; i < ss.length; i++) { System.out.println(ss[i]); } } }
9.將程序跑一把,得到打印信息,訪問成功
Tips:
如果在第5步生成不了客戶端代碼,可以配一下環境變量試試,配置內容如下:
變量名:AXIS2_HOME
變量值:D:\Program Files (x86)\axis2-1.5.6(你的電腦不一定是這個)
然后在Pah的最前面加上%AXIS2_HOME%/bin;(注意有個分號)
不配環境變量也可以,在axis的bin下面新建一個bat文件,直接雙擊就可以了(其實在bat文件中配置了環境變量),bat文件如下:
@echo off setlocal rem 下面兩行是環境變量 set "AXIS2_HOME=D:\ProgramFiles\axis2-1.5.6-bin\axis2-1.5.6" set "JAVA_HOME=C:\Program Files\Java\jdk1.8.0_181" rem 其中WeatherWS是wsdl文件的文件名,222是輸出文件夾,可以隨便命名 wsdl2java -uri WeatherWS.wsdl -o 222
其實上面調用webservice的方法對於任意的wsdl地址都可以用,寫客戶端調用接口的代碼也是一個套路。