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

首先需配置wsdl环境1、在官网下载环境包或直接在网盘下载:https://hik.lanzous.com/iKZ0tgloirg2、解压后配置环境变量(以你解压实际路径为准):在CLASSPATH中添加 D:\apache-cxf-3.3.7\lib;新建CXF_HOME D:\apache-cxf-3.3.7在PATH中添加 D:\apache-cxf-3.3.7\bin3、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调用时填充参数示例//创建holderHolder<TableOfData> myData = new Holder<TableOfData>();//创建以上泛型对象TableOfData tableOfData = new TableOfData();//定义holder值为上述对象myData.value = tableOfData;//TableOfData对象中有个list属性,用item进行赋值List zlist = new ArrayList<>();tableOfData.item = zlist;