金蝶接口调用步骤

复制代码
/**
 * 获取应用令牌
 *
 * @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();
}
相关推荐
float_六七2 小时前
IntelliJ IDEA双击Ctrl的妙用
java·ide·intellij-idea
能摆一天是一天3 小时前
JAVA stream().flatMap()
java·windows
颜如玉4 小时前
🤲🏻🤲🏻🤲🏻临时重定向一定要能重定向🤲🏻🤲🏻🤲🏻
java·http·源码
程序员的世界你不懂5 小时前
【Flask】测试平台开发,新增说明书编写和展示功能 第二十三篇
java·前端·数据库
星空寻流年5 小时前
设计模式第一章(建造者模式)
java·设计模式·建造者模式
gb42152876 小时前
java中将租户ID包装为JSQLParser的StringValue表达式对象,JSQLParser指的是?
java·开发语言·python
曾经的三心草6 小时前
Python2-工具安装使用-anaconda-jupyter-PyCharm-Matplotlib
android·java·服务器
Metaphor6926 小时前
Java 高效处理 Word 文档:查找并替换文本的全面指南
java·经验分享·word
ChinaRainbowSea6 小时前
7. LangChain4j + 记忆缓存详细说明
java·数据库·redis·后端·缓存·langchain·ai编程
stormsha6 小时前
飞算JavaAI炫技赛电商系统商品管理模块的架构设计与实现
java·架构·鸿蒙系统