小程序生成二维码

官方文档:获取二维码

这里使用其中的接口B: 


字段含义写的很清楚,需要注意的是page是小程序中已发布页面,且不能携带参数,参数放在scene中。请求成功的话微信服务器返回的是输入流,需要自行保存,以下看代码:

public class Test
{
    public static void main(String[] args)
    {
        try
        {
            URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=你的access_token");
            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());
            // 发送请求参数
            JSONObject paramJson = new JSONObject();
            paramJson.put("scene", "a=1234567890");
            paramJson.put("page", "pages/index/index");
            paramJson.put("width", 430);
            paramJson.put("auto_color", true);
            /**
             * line_color生效
             * paramJson.put("auto_color", false);
             * JSONObject lineColor = new JSONObject();
             * lineColor.put("r", 0);
             * lineColor.put("g", 0);
             * lineColor.put("b", 0);
             * paramJson.put("line_color", lineColor);
             * */

            printWriter.write(paramJson.toString());
            // flush输出流的缓冲
            printWriter.flush();
            //开始获取数据
            BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
            OutputStream os = new FileOutputStream(new File("/Users/Xxxx/Music/abc.png"));
            int len;
            byte[] arr = new byte[1024];
            while ((len = bis.read(arr)) != -1)
            {
                os.write(arr, 0, len);
                os.flush();
            }
            os.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
--------------------- 

    /**
     * 获取小程序的token_access
     * 
     * @param token
     * @param create_time
     * @param secret
     * @param user_name
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "getWXACodeUnlimit")
    public ResultCode getWXACodeUnlimit(
            @RequestParam(value = "scene", required = false) String scene,
            HttpServletRequest request) {
        System.out.println("111=====" + new Date());
        // 缺少参数
        if (StringUtils.isBlank(scene)) {
            return ResultCodeDataStr.ERROR("invalid argument");
        }

        String md5 = MD5Util.string2MD5(scene);
        // System.out.println(System.getProperty("user.dir"));

        String imageStorage = PropertiesUtil.getProperties_1(
                "resources/project.properties", "data.storage");

        String imageDomain = PropertiesUtil.getProperties_1(
                "resources/project.properties", "images.domain");

        // String pic = request.getRealPath("/") + "\\images\\qrcode\\" + md5
        // + ".png";
        // System.out.println(request.getRealPath("/"));
        String pic = imageStorage + "/images/qrcode/" + md5 + ".png";
        String pic1 = imageDomain + "/images/qrcode/" + md5 + ".png";

        /*
         * String tempImage = imageStorage + "/images/qrcode"; File tempFile =
         * new File(tempImage); if (!tempFile.exists()) { tempFile.mkdirs(); }
         */

        String expires_in = redisDBService.GET("qrcode:accessToken");
        String res = null;
        if (expires_in == null) {
            res = tokenServiceImpl.getAccessToken();
            redisDBService.SET("qrcode:accessToken", res, 7000);
        } else {
            res = expires_in;
        }
        System.out.println("start=====" + new Date());
        try {
            URL url = new URL(
                    "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="
                            + res);
            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());
            // 发送请求参数
            JSONObject paramJson = new JSONObject();
            paramJson.put("scene", scene);
            // paramJson.put("width", 430);
            // paramJson.put("auto_color", true);
            /**
             * line_color生效 paramJson.put("auto_color", false); JSONObject
             * lineColor = new JSONObject(); lineColor.put("r", 0);
             * lineColor.put("g", 0); lineColor.put("b", 0);
             * paramJson.put("line_color", lineColor);
             * */

            printWriter.write(paramJson.toString());
            // flush输出流的缓冲
            printWriter.flush();
            // 开始获取数据
            BufferedInputStream bis = new BufferedInputStream(
                    httpURLConnection.getInputStream());
            // String res = request.getContextPath();
            // System.out.println(pic);
            OutputStream os = new FileOutputStream(new File(pic));
            int len;
            byte[] arr = new byte[1024];
            while ((len = bis.read(arr)) != -1) {
                os.write(arr, 0, len);
                os.flush();
            }
            os.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("end=====" + new Date());
        return ResultCodeDataStr.SUCCESS(pic1);

    }
 

猜你喜欢

转载自blog.csdn.net/qq_23000805/article/details/83018502