Axis2生成wsdl客户端代码并实现webservice调用
Posted 明月心~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Axis2生成wsdl客户端代码并实现webservice调用相关的知识,希望对你有一定的参考价值。
Axis2生成wsdl客户端代码并实现webservice调用
生成客户端代码
使用idea插件
- 下载axis2-idea-plugin-1.8.2.zip,官网:https://axis.apache.org/axis2/java/core/download.html
- 解压到
D:\\Program Files\\JetBrains\\IntelliJ IDEA 2021.3.3\\plugins
- 查看idea版本
- 将版本修改为一致
- 重启idea
- 如果重启不生效,需要手动安装,将修改后的文件一起重新压缩为
axis2-idea-plugin-1.8.2.zip
- 选则安装本地安装
8.如果安装成功回多一个图标,版本不同可能不一样
- 由于我的idea可能版本比较老,重启idea失败,插件被自动禁用了才能启动idea,所以使用
wsdl2java
命令
使用命令wsdl2java
- 下载axis2-1.8.2-bin.zip,官网:https://axis.apache.org/axis2/java/core/download.html
- 解压到
D:\\Program Files\\axis2-1.8.2
- 设置系统环境变量
AXIS2_HOME
- 添加
bin
路径到PATH
- 执行命令生成客户端代码命令, -p:指定包名、-o:指定输出路径、-uri:指定wsdl的路径,可以是本地路径,也可以是http路径,基本上这三个参数就够了
wsdl2java -p com.kingdee.eas.hr.customextend.webservice -o E:\\workspace\\exam\\ -uri E:\\workspace\\exam\\WSPunchCardRecordSyncFacade.wsdl
对生成的代码调用
- 新建
Java
测试项目,直接创建空的项目就行 - 创建
lib
目录与src
同级就行,并将lib设置为依赖包加载目录
- 添加
Axis2
相关依赖,不清楚需要哪些就全部将Axis2
安装目录下的lib目录中的所有jar
包复制过来,当然不建议这样做,最好只导入需要的jar
包
- 编写
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()); // 异步获取结果
//
// );
** 各位需要金蝶、用友二开可以联系我
根据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调用的主要内容,如果未能解决你的问题,请参考以下文章