命令行/IDEA根据wsdl生成WebService客户端以及接口调用

首先需配置wsdl环境

1、在官网下载环境包或直接在网盘下载:https://hik.lanzous.com/iKZ0tgloirg

2、解压后配置环境变量(以你解压实际路径为准):

在CLASSPATH中添加 D:\apache-cxf-3.3.7\lib;
新建CXF_HOME D:\apache-cxf-3.3.7
在PATH中添加 D:\apache-cxf-3.3.7\bin

3、cmd中输入wsdl2java -v返回版本号说明环境配置成功

命令行生成webservice客户端

wsdl2java -d D:\webserviceClient -p top.cway.testWebServiceClient http://cway.top?WSDL

-d后为生成代码保持路径,-p为代码保存的包路径,最后的地址为webservice服务端地址,一般要加?WSDL获取其接口信息。

IDEA生成webService客户端

首先鼠标选择项目中的一个包,然后点击顶部菜单栏 Tools->WebServices->Generate Java Code From Wsdl  ,然后输入服务端地址,选cxf生成即可

优点:

idea生成的优点是其自动生成了直接可供测试的client代码,而命令行生成的需要自己写测试类调用接口。

调用示例与问题

示例接口(根据手机号码查询归属地的)

http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

大家可根据该接口生成代码进行测试。这里,IDEA生成了get/post/soap三种形式的client,经本地测试只有soap的可使用,可见IDEA还是很方便的。

当参数为一般类型还好办,但是参数为Holder怎么传值呢?例如

@WebParam(mode = WebParam.Mode.INOUT, name = "MyData", targetNamespace = "")
javax.xml.ws.Holder<TableOfData> myData

调用时填充参数示例

//创建holder
Holder<TableOfData> myData = new Holder<TableOfData>();
//创建以上泛型对象
TableOfData tableOfData = new TableOfData();
//定义holder值为上述对象
myData.value = tableOfData;
//TableOfData对象中有个list属性,用item进行赋值
List zlist = new ArrayList<>();
tableOfData.item = zlist;


目录导航
  • 首先需配置wsdl环境
  • 命令行生成webservice客户端
  • IDEA生成webService客户端
  • 调用示例与问题