wangrenhuang
2022-07-27 49a1b41feda0fc9665028e6d3b36eaa2e6e6a8af
生成有限二维码带版本参数
1个文件已修改
104 ■■■■■ 已修改文件
src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java
@@ -253,6 +253,110 @@
        return file;
    }
    /**生成有限二维码,返回临时文
     * @param at 微信token
     * @param page 跳转链接
     * @param width 宽度
     * @param autoColor 默认false
     * @param lineColor 默认null
     * @param isHyaline 默认false
     * @param envVersion 要打开的小程序版本。正式版为 release,体验版为 trial,开发版为 develop
     * @return
     */
    public static File createLimitedQrCode(String at, String page, int width, boolean autoColor,
                                           JSONObject lineColor, boolean isHyaline,String envVersion) {
        String imgUrl = null;
        InputStream in = null;
        HttpURLConnection conn = null;
        //创建临时文件
        File file = null;
        try {
            file = File.createTempFile("temp", ".jpg");
            //生成发送数据
            JSONObject obj = new JSONObject();
            obj.put("width", width);
            obj.put("path", page);
            obj.put("auto_color", autoColor);
            obj.put("line_color", lineColor);
            obj.put("is_hyaline", isHyaline);
            obj.put("env_version", envVersion);
            // 创建url资源
            URL url = new URL(StringUtils.format(MAKE_TWOCODE_ROUND_URL, at));
            // 建立http连接
            conn = (HttpURLConnection) url.openConnection();
            // 设置允许输出
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 设置不用缓存
            conn.setUseCaches(false);
            // 设置传递方式
            conn.setRequestMethod("POST");
            // 设置维持长连接
            conn.setRequestProperty("Connection", "Keep-Alive");
            // 设置文件字符集:
            conn.setRequestProperty("Charset", "UTF-8");
            // 设置文件类型:
            conn.setRequestProperty("contentType", "application/json");
            // 开始连接请求
            conn.connect();
            OutputStream out = conn.getOutputStream();
            // 写入请求的字符串
            out.write((obj.toString()).getBytes());
            out.flush();
            out.close();
            // 请求返回的状态
            if (conn.getResponseCode() == 200) {
                // 请求返回的数据
                in = conn.getInputStream();
                //输入到临时文件
                /*OutputStream os = new FileOutputStream(file);
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
                    os.write(buffer, 0, bytesRead);
                }*/
                FileUtils.copyInputStreamToFile(in, file);
                conn.disconnect();
                conn = null;
            }
            if (in != null) {
                in.close();
                in = null;
            }
            if (conn != null) {
                conn.disconnect();
                conn = null;
            }
        }catch (Exception e) {
            e.printStackTrace();
            if (in != null) {
                try {
                    in.close();
                }catch (Exception ep) {
                    ep.printStackTrace();
                }
                in = null;
            }
            if (conn != null) {
                conn.disconnect();
                conn = null;
            }
        }finally {
            if(file != null){
                file.deleteOnExit();
            }
        }
        return file;
    }
    /**生成无限二维码,返回临时文
     * @param at 微信token
     * @param scene 参数,只能32位,最好不要中文