WebAPI java SDK 集成以及无法动态国际化问题解决原创
44人赞赏了该文章
1,388次浏览
未经作者许可,禁止转载编辑于2023年09月04日 15:58:39
一、金蝶云星空中申请《第三方系统登陆授权》
参考:https://vip.kingdee.com/knowledge/specialDetail/229961573895771136?category=229963554177453824&id=298030366575393024&productLineId=1
二、官网下载JAVA SDK包并导入项目中
下载地址:https://openapidev.open.kingdee.com/ApiSdkCenter
如果是springboot项目
// maven 中引入 webapi 的 jar 包 <dependency> <groupId>com.kingdee.bos</groupId> <artifactId>k3cloud-webapi-sdk8.0.4</artifactId> <version>8.0.4</version> <scope>system</scope> <systemPath>${project.basedir}/lib/k3cloud-webapi-sdk8.0.4.jar</systemPath> </dependency>
三、基础 webapi 接口使用
在需要调用webapi接口的位置初始化 k3CloudApi
private static final K3CloudApi k3CloudApi = new K3CloudApi();
保存接口:
String result = k3CloudApi.save(formId, model); // 自定义解析 可返回 保存的单据编号 MyRepoRet repoRet = new Gson().fromJson(result, MyRepoRet.class); if (!repoRet.isSuccessfully()) { throw new Exception(getErrorMsg(repoRet.getResult().getResponseStatus().getErrors())); } return repoRet.getResult().getNumber();
更新接口:
String result = k3CloudApi.save(formId, model);
提交接口:
// number 单据编号 OperateParam operateParam = new OperateParam(); operateParam.setNumbers(Collections.singletonList(number)); OperatorResult operatorResult = k3CloudApi.submit(formId, operateParam);
审核接口:
// number 单据编号 OperateParam operateParam = new OperateParam(); operateParam.setNumbers(Collections.singletonList(number)); OperatorResult operatorResult = k3CloudApi.audit(formId, operateParam);
作废接口:
// number 单据编号 OperateParam operateParam = new OperateParam(); operateParam.setNumbers(Collections.singletonList(number)); String result = k3CloudApi.excuteOperation(formId, "Cancel", JSONUtil.toJsonStr(operateParam));
四、动态国际化
由于官方提供的webapi jar 不支持动态国际化,每次调用接口之前需先调用
LoginByAppSecret 接口
private void loginByAppSecret() {
AppCfg cfg = CfgUtil.getAppDefaultCfg();
IdentifyInfo identifyInfo = new IdentifyInfo();
identifyInfo.copyPropertiesToAppCfg(cfg);
Object[] loginInfo = {identifyInfo.getdCID(), identifyInfo.getUserName(), identifyInfo.getAppId(),
identifyInfo.getAppSecret(), getLanguageCode()};
try {
String execute = k3CloudApi.execute("Kingdee.BOS.WebApi.ServicesStub.AuthService.LoginByAppSecret", loginInfo);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
例如:
loginByAppSecret(); String result = k3CloudApi.save(formId, model);
刷新授权信息 就可以支持动态国际化了
赞 44
44人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!