金蝶接口调用步骤

复制代码
/**
 * 获取应用令牌
 *
 * @param map
 * @return
 * @throws IOException
 */
private InvoicingTokenResultVo getAppToken(Map<String, Object> map) throws IOException {
    //1. 允许第三方系统通过 API 得到应用 Token。
    String url= urlStr+"/ierp/api/getAppToken.do";
    // 参数
    InvoicingTokenVO invoicingTokenVO = new InvoicingTokenVO();
    invoicingTokenVO.setAppId(appId);
    invoicingTokenVO.setAppSecuret(appSecuret);
    invoicingTokenVO.setAccountId(accountId);
    invoicingTokenVO.setTenantid(tenantid);
    invoicingTokenVO.setLanguage(language);
    String accessToken = JSONObject.toJSONString(invoicingTokenVO);
    // 发送请求
    String resultJson = HttpUtil.doPostJsonTokeen(url, accessToken);
    JSONObject jsonObject1 = JSONObject.parseObject(resultJson);
    String data = jsonObject1.get("data").toString();
    ObjectMapper mapper = new ObjectMapper();
    InvoicingTokenResultVo invoicingTokenResultVo= mapper.readValue(data, InvoicingTokenResultVo.class);
    return invoicingTokenResultVo;
}
复制代码
/**
 * 获取用户令牌
 *
 * @param tokenResultVo
 * @return
 * @throws IOException
 */
private InvoicingAccessTokenResultVO getAccessToken(InvoicingTokenResultVo tokenResultVo) throws IOException {
    String url=urlStr+"/ierp/api/login.do";
    InvoicingAccessTokenVO invoicingAccessTokenVO =new InvoicingAccessTokenVO();
    invoicingAccessTokenVO.setUser(userName);
    invoicingAccessTokenVO.setApptoken(tokenResultVo.getApp_token());
    invoicingAccessTokenVO.setAccountId(accountId);
    invoicingAccessTokenVO.setTenantid(tenantid);
    invoicingAccessTokenVO.setUsertype(usertype);
    invoicingAccessTokenVO.setLanguage(language);
    String accessToken = JSONObject.toJSONString(invoicingAccessTokenVO);
    // 发送请求
    String resultJson = HttpUtil.doPostJsonTokeen(url, accessToken);
    JSONObject jsonObject1 = JSONObject.parseObject(resultJson);
    String data = jsonObject1.get("data").toString();
    ObjectMapper mapper = new ObjectMapper();
    InvoicingAccessTokenResultVO tokenResult= mapper.readValue(data, InvoicingAccessTokenResultVO.class);
    return tokenResult;
}
复制代码
/**
 * http post请求,Content-Type为json
 *
 * @param httpUrl 请求地址
 * @param param   请求参数(json)
 * @return 返回结果
 */
public static String doPostJsonTokeen(String httpUrl, @Nullable String param) {
    logger.info("发送post请求参数:{},地址:{}",param,httpUrl);
    HttpURLConnection connection = null;
    InputStream is = null;
    OutputStream os = null;
    BufferedReader br = null;
    StringBuffer result = new StringBuffer();
    try {
        //创建连接对象
        URL url = new URL(httpUrl);
        //创建链接
        connection = (HttpURLConnection) url.openConnection();
        //设置请求方法
        connection.setRequestMethod("POST");
        //设置连接超时时间(毫秒)
        connection.setConnectTimeout(15000);
        //设置读取超时时间
        connection.setReadTimeout(15000);
        //DoOutput设置是否想httpUrlConnection输出,DoInput设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个值
        //设置是否可读取
        connection.setDoInput(true);
        connection.setDoOutput(true);
        //设置通用的请求属性
        connection.setRequestProperty("accept", "*/*");
        connection.setRequestProperty("connection", "Keep-Alive");
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
        //拼装参数
        if (!TextUtils.isBlank(param)) {
            //设置参数
            os = connection.getOutputStream();
            //拼装参数
            os.write(param.getBytes("UTF-8"));
        }
        //设置权限
        //设置请求头
        //开启连接
        connection.connect();
        //读取响应
        if (connection.getResponseCode() == 200) {
            is = connection.getInputStream();
            if (null != is) {
                br = new BufferedReader(new InputStreamReader(is, "utf-8"));
                String temp = null;
                while (null != (temp = br.readLine())) {
                    result.append(temp);
                }
            }
        }
    logger.info("返回的参数:{}",result);
    } catch (IOException e) {
        logger.info("请求错误--" + e.getMessage());
        e.printStackTrace();
    } finally {
        if (null != br) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (null != os) {
            try {
                os.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (null != is) {
            try {
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //关闭远程连接
        connection.disconnect();
    }
    return result.toString();
}
相关推荐
都叫我大帅哥2 小时前
Java JJWT 完全指南:从入门到生产级实践
java
前端开发张小七3 小时前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
ThsPool4 小时前
【ENVI二次开发学习整理 04】ENVI功能扩展与二次开发
java·前端·javascript
赤壁小虾4 小时前
【渲染流水线】[逐片元阶段]-[透明度测试]以UnityURP为例
java·前端·数据库
青山木5 小时前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
Jul1en_5 小时前
【Claude Code Compact】源码级别的学习上下文压缩
java·前端·学习·github·ai编程
摇滚侠5 小时前
《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 管理 Spring Boot 应用 阅读笔记
java·spring boot·笔记
XWalnut6 小时前
SpringBoot快速入门
java·spring boot·后端
前端 贾公子6 小时前
第06章:结构化输出 (上)
java·服务器·前端
念何架构之路6 小时前
restartmanager-重启管理子系统
java·开发语言