package com.yn.bftl.thirdparty.common.util; import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Map; /** * @Author: mingwei * @Date:2021/11/15 * @Description:小程序码工具类 */ @Component public class ChatCodeUtil { // @Value("${app.id}") private String id; // @Value("${app.key}") private String key; /** * 返回access_token */ public String postToken(String requestWeiXinUrl) throws Exception { // String appId ="wxc0e4586672575d40"; //晚安 // String appKey="7e310c5ec8bdc212e7d6f00ce28c75a2"; String appId =id;//宇能云启 String appKey=key; String requestUrl = requestWeiXinUrl+ appId + "&secret=" + appKey; URL url = new URL(requestUrl); // 打开和URL之间的连接 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); // 设置通用的请求属性 connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Connection", "Keep-Alive"); connection.setUseCaches(false); connection.setDoOutput(true); connection.setDoInput(true); // 得到请求的输出流对象 DataOutputStream out = new DataOutputStream(connection.getOutputStream()); out.writeBytes(""); out.flush(); out.close(); // 建立实际的连接 connection.connect(); // 定义 BufferedReader输入流来读取URL的响应 BufferedReader in; if (requestUrl.contains("nlp")){ in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK")); }else { in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); } StringBuilder result = new StringBuilder(); String getLine; while ((getLine = in.readLine()) != null) { result.append(getLine); } in.close(); JSONObject jsonObject = JSONObject.parseObject(result.toString()); return jsonObject.getString("access_token"); } /** * 生成带参小程序二维码图片 * @param sceneStr 参数 * @param accessToken token */ public void getminiqrQr(Integer width,String sceneStr, String accessToken) { try { URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken); HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); httpURLConnection.setRequestMethod("POST");// 提交模式 // conn.setConnectTimeout(10000);//连接超时 单位毫秒 // conn.setReadTimeout(2000);//读取超时 单位毫秒 // 发送POST请求必须设置如下两行 httpURLConnection.setDoOutput(true); httpURLConnection.setDoInput(true); // 获取URLConnection对象对应的输出流 PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream()); // 发送请求参数 JSONObject paramJson = new JSONObject(); paramJson.put("scene", sceneStr); // paramJson.put("page", "pages/index/index"); paramJson.put("width", width); paramJson.put("auto_color", true); /** * line_color生效 * paramJson.put("auto_color", false); * JSONObject lineColor = new JSONObject(); * lineColor.put("r", 0); * lineColor.put("g", 0); * lineColor.put("b", 0); * paramJson.put("line_color", lineColor); * */ printWriter.write(paramJson.toString()); // flush输出流的缓冲 printWriter.flush(); //开始获取数据 BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream()); OutputStream os = new FileOutputStream(new File("E:/tools/1.png")); int len; byte[] arr = new byte[1024]; while ((len = bis.read(arr)) != -1) { os.write(arr, 0, len); os.flush(); } os.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 以二进制形式生成二维码 * @param url * @param paraMap * @return * @throws Exception */ public byte[] getminiqrQr(String url, Map<String, Object> paraMap) throws Exception { byte[] result = null; HttpPost httpPost = new HttpPost(url); httpPost.addHeader("Content-Type", "application/json"); // 设置请求的参数 JSONObject postData = new JSONObject(); for (Map.Entry<String, Object> entry : paraMap.entrySet()) { postData.put(entry.getKey(), entry.getValue()); } httpPost.setEntity(new StringEntity(postData.toString(), "UTF-8")); HttpClient httpClient = HttpClientBuilder.create().build(); HttpResponse response = httpClient.execute(httpPost); HttpEntity entity = response.getEntity(); result = EntityUtils.toByteArray(entity); return result; } }