1.获取access_token,怎么获取我这里就不说了!
可以看这篇文章:https://blog.csdn.net/qq_26365837/article/details/89969237
/**
* 获取微信的二维码
* @return
* @return Object
* @author tyg
* @date 2020年2月6日下午5:35:07
*/
@RequestMapping(value = "/wechat/getWechatqr", method = RequestMethod.GET)
public void getWechatqr(String scene, Integer width, HttpServletResponse response) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("scene", scene);
jsonObject.put("width", width == null ? 430 : width);
InputStream inputStream = HttpUtil.sendPostBackStream("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+wechatI.getAccessToken(), jsonObject.toJSONString());
response.setContentType("image/png");
try {
BufferedImage bi =ImageIO.read(inputStream);
ImageIO.write(bi, "PNG", response.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
}
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url 发送请求的 URL
* @param param 请求参数
* @return 所代表远程资源的响应结果
*/
public static InputStream sendPostBackStream(String url, String param) {
PrintWriter out = null;
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
conn.setDoOutput(true);
conn.setDoInput(true);
//解决乱码问题
OutputStreamWriter outWriter =new OutputStreamWriter(conn.getOutputStream(), "utf-8");
out =new PrintWriter(outWriter);
// 发送请求参数
if(StringUtils.isNotBlank(param)) {
out.print(param);
}
// flush输出流的缓冲
out.flush();
return conn.getInputStream();
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
} finally{
IOUtils.closeQuietly(out);
}
return null;
}
2.遇到的问题
access_token过期:{"errcode":42001,"errmsg":"access_token expired hints: [sadAve4MRa-g.elLA!]"}
解决方法:重新获取access_token
传入的数据格式不正确:{"errcode":47001,"errmsg":"data format error hint: [LuKkxa06781511]"}
我这里传入的参数是,scene=a=1&width=430,实际应该是json格式,{"scene":"a=1","width":"430"},可能有其他情况,我这里出现的是这种。
给大家看一下效果图。
祝大家调试顺利,新年快乐,预防新冠肺炎,远离人群,出门戴好口罩,家人平平安安!