首先需配置 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;
目录
首先需配置 wsdl 环境
命令行生成 webservice 客户端
IDEA 生成 webService 客户端
调用示例与问题
目录
首先需配置 wsdl 环境
命令行生成 webservice 客户端
IDEA 生成 webService 客户端
调用示例与问题