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

😂 这篇文章最后更新于1319天前,您需要注意相关的内容是否还可用。
目录导航
  • 首先需配置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;