金蝶接口调用步骤

复制代码
/**
 * 获取应用令牌
 *
 * @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();
}
相关推荐
苏瞳儿3 小时前
java对数据库的增删改查
java·数据库·oracle
zhangjw343 小时前
Java基础语法:变量、数据类型与运算符,从原理到实战
java·开发语言
yaoxin5211236 小时前
384. Java IO API - Java 文件复制工具:Copy 示例完整解析
java·开发语言·python
NotFound4867 小时前
实战指南如何实现Java Web 拦截机制:Filter 与 Interceptor 深度分享
java·开发语言·前端
一 乐8 小时前
医院挂号|基于springboot + vue医院挂号管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·医院挂号管理系统
鱼鳞_8 小时前
Java学习笔记_Day29(异常)
java·笔记·学习
烟锁池塘柳08 小时前
一文讲透 C++ / Java 中方法重载(Overload)与方法重写(Override)在调用时机等方面的区别
java·c++·面向对象
一叶飘零_sweeeet8 小时前
深入拆解 Fork/Join 框架:核心原理、分治模型与参数调优实战
java·并发编程
云烟成雨TD9 小时前
Spring AI Alibaba 1.x 系列【23】短期记忆
java·人工智能·spring
摇滚侠9 小时前
帮我整理一份 IDEA 开发中常用快捷键
java·ide·intellij-idea