微信小程序getWXACodeUnlimit接口调用和返回二进制流转换成图片保存到本地

微信小程序获取无限制带参数二维码后台接口请求处理

第一步简单无坑GET请求把你的appid和appsecret拼接起来的URL会返回一个ACCESS_TOKEN

    public static String wxGetQrcode(String appid, String secret) {
        String getQrcode = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="
                + appid + "&secret=" + secret + "";
        return getQrcode;
    }

第二步有些地方特别要注意,一步一步往下看

接口地址:

POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

注意:这一整串是接口地址,特别特别注意的是ACCESS_TOKEN值要拼接在这个接口里面例;

https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=“第一步获取的ACCESS_TOKEN” 这就是接口地址access_token不要当成请求参数很关键

第三步把参数存入Map集合(注意:不要把access_token也放进map集合了!!!)

HashMap params = new HashMap<>();
            params.put("scene", scene);
            params.put("page", page);

scene string  

最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode处理,请使用其他编码方式)

page string 主页 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面

 

一定要看后面备注!!!!其他参数也一样,我只需要这两个参数,其他没传。

第四步 非常关键

map集合转成JSONObject

net.sf.json.JSONObject json = net.sf.json.JSONObject.fromObject(params);

没有包的网上都能找到

最后一步了POST请求,把二进制流保存到本地

public static void wxPost(String uri, JSONObject paramJson, String fileName) {
        try {
            URL url = new URL(uri);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url
                    .openConnection();
            httpURLConnection.setRequestMethod("POST");// 提交模式
            // conn.setConnectTimeout(10000);//连接超时 单位毫秒
            // conn.setReadTimeout(2000);//读取超时 单位毫秒
            // 发送POST请求必须设置如下两行
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            // 获取URLConnection对象对应的输出流
            PrintWriter printWriter = new PrintWriter(
                    httpURLConnection.getOutputStream());
            printWriter.write(paramJson.toString());
            // flush输出流的缓冲
            printWriter.flush();
            // 开始获取数据
            BufferedInputStream bis = new BufferedInputStream(
                    httpURLConnection.getInputStream());
            OutputStream os = new FileOutputStream(new File("D:/upFiles/"
                    + fileName + ".png"));
            int len;
            byte[] arr = new byte[1024];
            while ((len = bis.read(arr)) != -1) {
                os.write(arr, 0, len);
                os.flush();
            }
            os.close();
            bis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

后续处理 扫描二维码进入小程序

Page({
  onLoad(query) {
    // scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
    const scene = decodeURIComponent(query.scene)
  }
})

你可能感兴趣的:(微信小程序,开发问题,获取无限二维码,微信小程序,微信小程序后台,获取无限带参数二维码)