Java调用webservice接口
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地址都可以用,写客户端调用接口的代码也是一个套路。