微信小程序获取小程序码的无限制接口是返回二进制内容


请求微信接口获取字节数组byte[]
public byte[] getQrCodeUnlimited(String scene,String page){
// 获取access_token 请自己封装
String accessToken = getAccessToken();
Map<String,String> params = new HashMap<>(3);
params.put("scene",scene);
params.put("page",page);
try {
byte[] buffer = HttpClientUtil.doJsonPostRawResponse("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken, null, params);
return buffer;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
// 此处的httpUtil是我自己封装的,你也可以使用[wxJava](https://github.com/Wechat-Group/WxJava)里面的小程序获取byte数组的方法获取,第二种没有尝试过
通过springmvc输出出去
@RequestMapping("/qrcode")
@RestController
public class QrCodeController {
@Autowired
private WechatUtil wechatUtil;
// 这个方法可以实现,十分简单
@RequestMapping("/unlimted")
public void getQrcodeUnlimted(@RequestParam(value = "page",required = false)String page,@RequestParam(value = "sid",required = false)String sid, HttpServletResponse response) throws IOException {
sid = URLDecoder.decode(sid,"UTF-8");
String scene = sid;
byte[] buffer = wechatUtil.getQrCodeUnlimited(scene,page);
response.setContentType("image/jpeg");
OutputStream outputStream = response.getOutputStream();
outputStream.write(buffer);
outputStream.flush();
outputStream.close();
}
// 下面这个方法,也可以实现
@RequestMapping("/unlimted2")
public ResponseEntity<byte[]> getQrcodeUnlimted2(@RequestParam(value = "page",required = false)String page, @RequestParam(value = "sid",required = false)String sid, HttpServletResponse response) throws IOException {
sid = URLDecoder.decode(sid,"UTF-8");
String scene = sid;
byte[] buffer = wechatUtil.getQrCodeUnlimited(scene,page);
HttpHeaders headers = new HttpHeaders();
headers.setCacheControl(CacheControl.noCache().getHeaderValue());
headers.setContentType(MediaType.IMAGE_JPEG);
ResponseEntity<byte[]> responseEntity = new ResponseEntity<byte[]>(buffer,headers,HttpStatus.OK);
return responseEntity;
}
}
前端可以通过修改src里面的值来修改
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />
具体可以参考base64图片中的高分答案
总结
这终究是以IO操作,返回流时,加了头部信息image/jpeg
不多bb,我去当社畜了,如果有需要工具包的可以评论。