java 获取小程序码并转化成base64传给客户端

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36652619/article/details/86554144

因为只是调api很简单,这里不多说直接上代码:

public ServerResponse<Object> qr_code_m_program(String scene, String path, HttpServletRequest request){
        String token = request.getHeader("token");
        //验证参数是否为空
        List<Object> l1 = new ArrayList<Object>(){{
            add(token);
        }};
        String CheckNull = CommonFunc.CheckNull(l1);
        if (CheckNull != null) return ServerResponse.createByErrorMessage(CheckNull);
        //验证token
        String uid = CommonFunc.CheckToken(request,token);
        if (uid == null){
            //未找到
            return ServerResponse.createByErrorMessage("身份认证错误!");
        }else {
            try{
                //获取accessToken
                AccessToken access_token = CommonFunc.getAccessToken();
                Map<String, Object> params = new HashMap<>();
                params.put("scene", scene);  //参数
                params.put("page", path); //位置
                params.put("width", 280);
                params.put("is_hyaline", true);

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

                HttpPost httpPost = new HttpPost("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+access_token.getAccessToken());  // 接口
                httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
                String body = JSON.toJSONString(params);           //必须是json模式的 post
                StringEntity entity;
                entity = new StringEntity(body);
                entity.setContentType("image/png");

                httpPost.setEntity(entity);
                HttpResponse response = httpClient.execute(httpPost);
                InputStream inputStream = response.getEntity().getContent();
                // 将获取流转为base64格式
                String result = "";
                byte[] data = null;
                ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
                byte[] buff = new byte[100];
                int rc = 0;
                while ((rc = inputStream.read(buff, 0, 100)) > 0) {
                    swapStream.write(buff, 0, rc);
                }
                data = swapStream.toByteArray();

                result = new String(Base64.getEncoder().encode(data));
                return ServerResponse.createBySuccess("成功",result);
            }catch (Exception e){
                return ServerResponse.createByErrorMessage("非法操作"+e.getMessage());
            }
        }
    }

工具类获取AccessToken:

public static AccessToken getAccessToken() {
        AccessToken token = null;
        String requestUrl = "https://api.weixin.qq.com/cgi-bin/token";
        String param = "grant_type=client_credential&appid="+ WxConfig.wx_app_id +"&secret="+ WxConfig.wx_app_secret;
        // 发起GET请求获取凭证
        JSONObject jsonObject = JSON.parseObject( UrlUtil.sendGet(requestUrl, param));

        if (null != jsonObject) {
            try {
                token = new AccessToken();
                token.setAccessToken(jsonObject.getString("access_token"));
                token.setExpiresIn(jsonObject.getInteger("expires_in"));
            } catch (JSONException e) {
                token = null;
                // 获取token失败
                System.out.println("获取token失败 errcode:{"+jsonObject.getInteger("errcode")+"} errmsg:{"+jsonObject.getString("errmsg")+"}");
//                log.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInteger("errcode"), jsonObject.getString("errmsg"));
            }
        }
        return token;
    }

AccessToken类:

public class AccessToken {
    //接口访问凭证
    private String accessToken;
    //接口有效期,单位:秒
    private int expiresIn;

    public String getAccessToken() {
        return accessToken;
    }
    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }
    public int getExpiresIn() {
        return expiresIn;
    }
    public void setExpiresIn(int expiresIn) {
        this.expiresIn = expiresIn;
    }
}

结果:

猜你喜欢

转载自blog.csdn.net/qq_36652619/article/details/86554144
今日推荐