金蝶接口调用步骤

复制代码
/**
 * 获取应用令牌
 *
 * @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();
}
相关推荐
ZealSinger4 分钟前
LangChain4j用AiServices拼Tool
java·rag·ai智能体·langchain4j
vx_Biye_Design13 分钟前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
Sweet锦1 小时前
不调 Python,不装向量库:我用纯 Java 写了一套以图搜图引擎
java·人工智能·开源·图搜索
如意猴2 小时前
【C++】007 C/C++ 内存管理机制、malloc与new的区别及模板初阶
java·c++·算法
可乐鸡翅yeah_2 小时前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
专业程序开发源3 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计
用户094248568033 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu3 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
樱花落木兰3 小时前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
HAHAXX83 小时前
电商RPA批量上架通用方案:一套流程如何同时跑通拼多多、抖店、淘宝和跨境平台
java·运维·rpa