java微信小程序 获取二维码

如果用Spring那套RestTemplate不能获取,或者获取了生成的图片文件是无法打开的,大小是150多k的(当宽度为430的时候,应该是55k左右),可以看看我的方法


package com.wx.scooter;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.protocol.HTTP;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.wx.scooter.tool.CheckTool;
import com.wx.scooter.tool.Constant;
import com.wx.scooter.tool.HttpTool;

public class TestQR {
    public static void main(String[] args) throws Exception {
        //获取token
        String result1 = HttpTool.get("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+Constant.NATIVE_APP_ID+"&secret="+Constant.NATIVE_APP_SECRET);
        String access_token = JSONObject.parseObject(result1).getString("access_token");
        if(CheckTool.isString(access_token)) {
            System.out.println("token为");
            System.out.println(access_token);
            Map<String, Object> params = new HashMap<>();
            params.put("scene", "test");
            params.put("page", "pages/index/index");
            params.put("width", 430);

            CloseableHttpClient  httpClient = HttpClientBuilder.create().build();

            HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+access_token);
            httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
            String body = JSON.toJSONString(params);
            StringEntity entity;
            entity = new StringEntity(body);
            entity.setContentType("image/png");

            httpPost.setEntity(entity);
            HttpResponse response;

            response = httpClient.execute(httpPost);
            InputStream inputStream = response.getEntity().getContent();

            File targetFile = new File("D:\\");  
            if(!targetFile.exists()){    
                targetFile.mkdirs();    
            }       
            FileOutputStream out = new FileOutputStream("D:\\upload\\5.png");

            byte[] buffer = new byte[8192];
            int bytesRead = 0;
            while((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) {
                out.write(buffer, 0, bytesRead);
            }

            out.flush();
            out.close();
        } else {
            System.out.println("获取access_token错误");
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
生成微信小程序二维码可以使用微信官方提供的API,具体可以参考微信官方文档。以下是使用Java实现生成微信小程序二维码的示例代码: ```java import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class WeChatQRCode { public static void main(String[] args) throws IOException { // 小程序 appid String appid = "your appid"; // 小程序 appsecret String appsecret = "your appsecret"; // 获取 access_token 的接口地址 String tokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + appsecret; // 获取小程序码的接口地址 String qrcodeUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token="; // 保存二维码的本地文件路径 String filePath = "qrcode.jpg"; // 发送获取 access_token 的请求 URL url = new URL(tokenUrl); URLConnection conn = url.openConnection(); InputStream in = conn.getInputStream(); byte[] buffer = new byte[1024]; int len; StringBuilder sb = new StringBuilder(); while ((len = in.read(buffer)) != -1) { sb.append(new String(buffer, 0, len)); } in.close(); String accessToken = sb.toString().split("\"")[3]; // 发送获取小程序码的请求 url = new URL(qrcodeUrl + accessToken); conn = url.openConnection(); in = conn.getInputStream(); FileOutputStream out = new FileOutputStream(filePath); while ((len = in.read(buffer)) != -1) { out.write(buffer, 0, len); } out.close(); in.close(); System.out.println("小程序码已保存到:" + filePath); } } ``` 需要注意的是,生成小程序码的接口有一些限制,例如必须是已发布的小程序二维码有效期为7天等,具体请参考微信官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值