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()); // 异步获取结果
// }
// });
各位需要金蝶、用友二开可以联系我