微信公众号开发系列(三)公众号生成二维码
首先第一步得到一个二维码ticket,这个主要就是一个换取凭证的过程,可以类别于坐高铁的车票。我们看下这个api
这里的32位是指二进制数,按照你想传参的类型选则是id还是str,通过action_name可以决定二维码是否是永久的,下面是参数json结构
{
"action_info": {
"scene": {
"scene_id": 12
}
},
"action_name": "QR_SCENE",
"expire_seconds": 7200
}
发送post请求,部分代码清单
如果成功会有下面的返回值,如果时永久的就没有过期时间字段。
首先是api,非常简单
那么上代码
public void generateQrCodeOfficial(JSONObject ticketJson, HttpServletResponse response) {
StringBuilder sb = new StringBuilder(WxOaUrlConfig.API_SHOW_QR_CODE);
try {
sb.append("ticket=").append(URLEncoder.encode(ticketJson.getString("ticket"),"utf-8"));
String url =sb.toString();
httpUtil.getImage(response,url);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
首先是拼接url,然后发送请求,这里设置响应的格式,同时用 字节流进行输出
public void getImage(HttpServletResponse response,String url){
try {
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestMethod("GET");
InputStream inputStream = conn.getInputStream();
byte[] bytes = readInputStream(inputStream);
inputStream.close();
response.setContentType("image/jpg");
OutputStream outputStream = response.getOutputStream();
outputStream.write(bytes);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private byte[] readInputStream(InputStream inputStream) throws IOException {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inputStream.read(buffer)) != -1){
outputStream.write(buffer,0,len);
}
inputStream.close();
return outputStream.toByteArray();
}
然后调用结果就是这样的。好了大家一起愉快的买票上车吧
上一篇:
uniapp开发微信小程序-2.页面制作
下一篇:
10分钟快速搭建小程序项目
