Axis2生成wsdl客户端代码并实现webservice调用

发布时间 2023-04-18 03:05:39作者: 明月心~

Axis2生成wsdl客户端代码并实现webservice调用

本文地址:https://www.cnblogs.com/muphy/p/17328158.html

生成客户端代码

使用idea插件

  1. 下载axis2-idea-plugin-1.8.2.zip,官网:https://axis.apache.org/axis2/java/core/download.html
  2. 解压到D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\plugins
  3. 查看idea版本
  4. 将版本修改为一致
  5. 重启idea
  6. 如果重启不生效,需要手动安装,将修改后的文件一起重新压缩为axis2-idea-plugin-1.8.2.zip
  7. 选则安装本地安装

    8.如果安装成功回多一个图标,版本不同可能不一样
  8. 由于我的idea可能版本比较老,重启idea失败,插件被自动禁用了才能启动idea,所以使用 wsdl2java命令

使用命令wsdl2java

  1. 下载axis2-1.8.2-bin.zip,官网:https://axis.apache.org/axis2/java/core/download.html
  2. 解压到D:\Program Files\axis2-1.8.2
  3. 设置系统环境变量AXIS2_HOME
  4. 添加bin路径到PATH
  5. 执行命令生成客户端代码命令, -p:指定包名、-o:指定输出路径、-uri:指定wsdl的路径,可以是本地路径,也可以是http路径,基本上这三个参数就够了
wsdl2java -p com.kingdee.eas.hr.customextend.webservice -o E:\workspace\exam\ -uri E:\workspace\exam\WSPunchCardRecordSyncFacade.wsdl


对生成的代码调用

  1. 新建Java测试项目,直接创建空的项目就行
  2. 创建lib目录与src同级就行,并将lib设置为依赖包加载目录
  3. 添加Axis2相关依赖,不清楚需要哪些就全部将Axis2安装目录下的lib目录中的所有jar包复制过来,当然不建议这样做,最好只导入需要的jar
  4. 编写webservice调用代码
// 远程webservice方法签名
public String punchCardRecordSync(Context ctx, Date startTime, Date endTime);
WSPunchCardRecordSyncFacadeSrvProxyServiceStub stub = new WSPunchCardRecordSyncFacadeSrvProxyServiceStub("http://192.168.197.130:6888/ormrpc/services/WSPunchCardRecordSyncFacade"); // 客户端包装
            WSPunchCardRecordSyncFacadeSrvProxyServiceStub.PunchCardRecordSync sync = new WSPunchCardRecordSyncFacadeSrvProxyServiceStub.PunchCardRecordSync(); // 创建参数对象
            sync.setStartTime("2023-02-01"); // 设置参数StartTime
            sync.setEndTime("2023-02-06"); // 设置参数StartTime
            ServiceClient client = stub._getServiceClient(); // 获取内部客户端,主要是为了设置header,不然可以不用
            final OMFactory fac = OMAbstractFactory.getOMFactory(); // 创建一个header
            OMElement header = fac.createOMElement(new QName("http://login.webservice.bos.kingdee.com", "SessionId")); // 设置header的名称空间和名称
            header.setText("887c6e7a-a010-4e37-a568-c16f0692cd81"); // 设置header的值
            client.addHeader(header); // 客户端添加header对象
            WSPunchCardRecordSyncFacadeSrvProxyServiceStub.PunchCardRecordSyncResponse response = stub.punchCardRecordSync(sync); // 调用远程punchCardRecordSync方法
            String syncReturn = response.getPunchCardRecordSyncReturn(); // 同步获取结果
            System.out.println("syncReturn = " + syncReturn);
//            stub.startpunchCardRecordSync(sync, new WSPunchCardRecordSyncFacadeSrvProxyServiceCallbackHandler() { // 异步调用远程punchCardRecordSync方法,设置了回调处理
//                @Override
//                public void receiveResultpunchCardRecordSync(WSPunchCardRecordSyncFacadeSrvProxyServiceStub.PunchCardRecordSyncResponse result) {
//                    System.out.println(result.getPunchCardRecordSyncReturn()); // 异步获取结果
//                }
//            });

  1. 还有其他调用方式
    可参考:https://blog.csdn.net/weixin_44152160/article/details/128404058

** 各位需要金蝶、用友二开可以联系我