chenjiahe
2023-02-07 1b181507f2564bfd327cc3a8e5d75a8620c3d09d
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位,最好不要中文