哪位大神知道怎么获取二维码图片?我获取的一直是乱码
发布于 5 年前 作者 xia75 4945 次浏览 来自 问答

调用小程序里的获取二维码接口后,一直返回乱码,但是在postman里又可以成功获取到二维码图片。

哪位大神知道是什么问题导致获取不到二维码图片?

wx.request({

               url: url,

               data: {

                         path:“pages/test/test”,

                         width:175

                     },

               method: ‘POST’,

               header: {

                 ‘content-type’:‘application/json’

               },

               success: function(res) {

                 console.log(res);

               }

})

8 回复

那后台怎么解析这串乱码啊???

谢谢大神! 那前端可以直接从接口取到图片地址吗?

data是报错信息。 没有图片,你可以用postman试试,图片是保存在Content-disposition →attachment; filename="_app_…/cardDetail/cardDetail?cardid=6437&type=cn.jpg"  ,需要后端服务器将图片保存后,将图片名称发到前端。

 String URL = “二维码接口地址”;
  String meetingId=request.getParameter(“id”);//我自己的参数,不用管
  log.info("------------------createwxaqrcode"+meetingId);
  if(meetingId!=null&&meetingId.trim().length()>0){
   String access_token;
   InputStream is=null;
   OutputStream os=null;
   try {
    access_token = getAccess_token();//获取token,我自己写的方法,把acess_token获取出来就行
    URL = URL + “?access_token=” + access_token;
    Map<String, Object> map = new HashMap<String, Object>();
    map.put(“path”, “pages/index/index?meetingId=”+meetingId);
    map.put(“width”, 375);
    JSONObject json = new JSONObject(map);
    CloseableHttpClient client = HttpClients.createDefault();
    HttpPost post = new HttpPost(URL);
    post.addHeader(HTTP.CONTENT_TYPE, “application/json”);
    StringEntity se;
    se = new StringEntity(json.toString());
    se.setContentType(“application/json”);
    se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, “UTF-8”));
    post.setEntity(se);
    StringEntity s = new StringEntity(json.toString(), “utf-8”);
    s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
      “application/json”));
    post.setEntity(s);
    HttpResponse res = client.execute(post);
    if(res!=null){
     HttpEntity resEntity = res.getEntity();
     if (resEntity != null) {
      // 获取响应输入流
       is = resEntity.getContent();
       response.setHeader(“Content-Type”,“application/x-msdownload”);
       os=response.getOutputStream();
       //os=new FileOutputStream(“D:\\test.png”);//生成图片
       int count = 0;
       byte[] buffer = new byte[1024 * 8];
       while ((count = is.read(buffer)) != -1) {
        os.write(buffer, 0, count);
        os.flush();
       }
       os.close();
       is.close();
     }
    }

我是直接把流发送到小程序端的,直接用image标签的 src属性读取的

 请问,data里的那些字符串是什么?是base64字符串吗?将这些字符串传到后台然乎生成图片,再由前台调用吗?

@4楼 怎么把Content-disposition 传输给后端。?

楼主,请问你们是怎么获取access_token的呀?

要在后端保存图片到服务器本地,然后调用链接

回到顶部