目录导航
首先需配置wsdl环境
命令行生成webservice客户端
IDEA生成webService客户端
调用示例与问题
首先需配置wsdl环境
1、在官网下载环境包或直接在网盘下载:https://hik.lanzoux.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;