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

 

posted @ 2020-08-14 21:51  不夹心饼干  阅读(3458)  评论(0编辑  收藏  举报