小程序模板网

小程序生成带参二维码(JAVA)

作者:lay2016,来自原文地址

在使用小程序提供的API: createwxaqrcode的时候,后台获取的返回值是一些像乱码的东西。 
其实这些东西是二维码的数据流,而且是没有经过base64加密过的。 
所以不需要经过base64解密。 
直接将数据流保存为JPG或者PNG图片就可以了。 
但是怎么保存呢? 
我这里提供一下项目中的Java代码:

 

				
  1. /**
  2. * 获取二维码请求
  3. * @param request
  4. * @param url
  5. * @param params
  6. * @return 返回二维码地址
  7. */
  8. public static String getQRCode(HttpServletRequest request, String url, String params){
  9. System.out.println("地址:" + url);
  10. System.out.println("参数:" + params);
  11.  
  12. HttpClient client = new DefaultHttpClient();
  13. HttpPost post = new HttpPost(url);
  14.  
  15. post.setHeader("Content-Type", "application/json");
  16. post.addHeader("Authorization", "Basic YWRtaW46");
  17. String result = "";
  18.  
  19. try {
  20.  
  21. StringEntity s = new StringEntity(params, "utf-8");
  22. s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
  23. "application/json"));
  24. post.setEntity(s);
  25.  
  26. // 发送请求
  27. HttpResponse httpResponse = client.execute(post);
  28.  
  29. // 获取响应输入流
  30. InputStream inStream = httpResponse.getEntity().getContent();
  31. String savePath = request.getSession().getServletContext().getRealPath("upload/code");
  32. String fileName = new GuidUtils().newGuid();
  33. String fileExt = ".jpg";
  34. // 如果没有该路径,那么创建一个
  35. File file = new File(savePath);
  36. if (!file.exists()){
  37. file.mkdirs();
  38. }
  39. saveImgInStream(inStream, savePath, fileName, fileExt);
  40. result = "/upload/code/" + fileName + fileExt;
  41. } catch (Exception e) {
  42. System.out.println("请求异常");
  43. throw new RuntimeException(e);
  44. }
  45. return result;
  46. }
  47.  
  48. /**
  49. * 将输入流保存为图片
  50. * @param stream 输入流
  51. * @param savePath 存储路径
  52. * @param fileName 文件名
  53. * @param fileExt 格式
  54. * @throws Exception
  55. */
  56. public static void saveImgInStream(InputStream stream, String savePath, String fileName, String fileExt) throws Exception{
  57. // 将输入流保存为图片
  58. byte[] data = new byte[1024];
  59. int len = 0;
  60. FileOutputStream fileOutputStream = null;
  61. String path = savePath + "\\" + fileName + fileExt;
  62. fileOutputStream = new FileOutputStream(path);
  63. while ((len = stream.read(data)) != -1) {
  64. fileOutputStream.write(data, 0, len);
  65. }
  66. // 关闭流
  67. fileOutputStream.close();
  68. }

省略了不少代码,仅供参考



易优小程序(企业版)+灵活api+前后代码开源 码云仓库:starfork
本文地址:https://www.eyoucms.com/wxmini/doc/course/23560.html 复制链接 如需定制请联系易优客服咨询:800182392 点击咨询
QQ在线咨询