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

Posted 明月心~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axis2生成wsdl客户端代码并实现webservice调用相关的知识,希望对你有一定的参考价值。

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

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

根据wsdl,axis2工具生成客户端代码

根据wsdl,axis2工具生成客户端代码

步骤:

1,下载axis2版本http://axis.apache.org/axis2/java/core/download.html

2,下载完成后解压,设置环境变量,加入AXIS2_HOME=<Axis2客户端安装目录>,path中追加;%AXIS2_HOME%\bin  

3,打开命令行,进入bin目录下,执行命令:

${installdir}>WSDL2Java -uri http://192.168.52.80:8080/test/webservices/XyzqTokenSrv?wsdl -p com.pcm.framework.utils -d adb -s

或者

创建一个新的XyzqTokenSrv.bat文件内容为:

wsdl2java.bat -uri http://192.168.52.80:8080/test/webservices/XyzqTokenSrv?wsdl

生成的代码则存储在axis2-1.6.1\bin\src下,

一般会生成2个文件:XyzqTokenSrvCallbackHandler.java、XyzqTokenSrvStub.java

4,把生成的文件拷贝到工程;

5,代码调用客户端:

XyzqOrgSrvStub stub = new XyzqOrgSrvStub();
//获取条数
XyzqOrgSrvStub.GetPersonCountResponse personCount = stub.getPersonCount();
XyzqOrgSrvStub.CountResponse countRes = personCount.get_return();
count = countRes.getCount();

 

 

 

以上是关于Axis2生成wsdl客户端代码并实现webservice调用的主要内容,如果未能解决你的问题,请参考以下文章

使用axis2,根据WSDL生成java客户端代码

使用axis2,根据WSDL生成java客户端代码

axis2生成的客户端代码怎么用

axis2的wsdl2java命令可以生成wsdl的服务端和客服端代码,请问各位大牛这个客服端和服务端的有啥区别。

apache axis2 生成客户端实体类

axis2的wsdl无法使用eclipse axis1插件来生成client--解决方法