Java生成微信小程序二维码
Java生成微信小程序二维码
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.binary.Base64;/*** 微信二维码生成* @author cq*/
public class WX_java { /*** (一) 获取 accessToken* @param request* @param response* @return 返回的是JSON类型 ; 获取accessToken:get("access_token");*/public static JSONObject getAccessToken(HttpServletRequest request, HttpServletResponse response) {JSONObject json = null;try {URL url = new URL("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxxxxx&secret=xxxxxx");HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();urlcon.connect(); // 获取连接InputStream is = urlcon.getInputStream();BufferedReader buffer = new BufferedReader(new InputStreamReader(is));StringBuffer bs = new StringBuffer();String str = null;while ((str = buffer.readLine()) != null) {bs.append(str);}json = (JSONObject) JSONObject.parse(bs.toString());System.out.println("------------" + json);} catch (Exception e) {e.printStackTrace();}return json;} /*** (二) 二维码生成:通过该接口生成的小程序码,永久有效,数量暂无限制* @param sceneStr 参数* @param accessToken 密匙* @return*/public static Map<String, Object> getminiqrQrTwo(String sceneStr, String accessToken) {RestTemplate rest = new RestTemplate();InputStream inputStream = null;OutputStream outputStream = null;try {String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;Map<String, Object> param = new HashMap<String,Object>();param.put("scene", "sad51af166,cq_001");// 输入参数 最大32字符param.put("page", "pages/index/index");// 路径 如果没有默认跳转到首页面微信小程序发布后才可以使用不能添加参数param.put("width", "430");// 二维码尺寸param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效param.put("auto_color", false); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效// 颜色 auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"}// 十进制表示Map<String, Object> line_color = new HashMap<String,Object>();line_color.put("r", 0);line_color.put("g", 0);line_color.put("b", 0);param.put("line_color", line_color);System.out.println("调用生成微信URL接口传参:" + param);MultiValueMap<String, String> headers = new LinkedMultiValueMap<String,String>();// 头部信息List<String> list = new ArrayList<String>();list.add("Content-Type");list.add("application/json");headers.put("header", list);HttpEntity<Object> requestEntity = new HttpEntity<Object>(param, headers);ResponseEntity<byte[]> entity = rest.exchange(url, HttpMethod.POST, requestEntity, byte[].class,new Object[0]);System.out.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody());byte[] result = entity.getBody();System.out.println(Base64.encodeBase64String(result));inputStream = new ByteArrayInputStream(result);File file = new File("D:\\1.png");// 这里返回的是生成的二维码if (!file.exists()) {file.createNewFile();}outputStream = new FileOutputStream(file);int len = 0;byte[] buf = new byte[1024];while ((len = inputStream.read(buf, 0, 1024)) != -1) {outputStream.write(buf, 0, len);}outputStream.flush();} catch (Exception e) {System.out.println("调用小程序生成微信永久小程序码URL接口异常" + e);} finally {if (inputStream != null) {try {inputStream.close();} catch (IOException e) {e.printStackTrace();}}if (outputStream != null) {try {outputStream.close();} catch (IOException e) {e.printStackTrace();}}}return null;}// 测试代码public static void getErWeiMa(String access_token) {try {// URL url = new// URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+access_token);URL url = new URL("https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?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", "a1wJgLz0Dcg,sw_001");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", 054);lineColor.put("g", 037);lineColor.put("b", 159);paramJson.put("line_color", lineColor);printWriter.write(paramJson.toString());// flush输出流的缓冲printWriter.flush();// 开始获取数据BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());OutputStream os = new FileOutputStream(new File("D:\\erweima3.txt"));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();}}public static void main(String[] args) {HttpServletRequest request = null;HttpServletResponse response = null;//getAccessToken(request, response);getminiqrQrTwo("123456", getAccessToken(request, response).get("access_token").toString());//getErWeiMa(getAccessToken(request, response).get("access_token").toString());// getminiqrQrOne(getAccessToken(request,// response).get("access_token").toString());}
}
Java生成微信小程序二维码相关推荐
- Java生成微信小程序二维码,5种实现方式,一个比一个简单
文章目录 前言 先看官网 一.JDK自带的URLConnection方式 二.Apache的HttpClient方式 三.okhttp3方式 四.Unirest方式 五.RestTemplate方式 ...
- 【java】Java生成微信小程序二维码
文章目录 前言 应用场景 微信小程序官网 1.RestTemplate方式 核心代码 getAccessToken 2. Unirest方式 Maven依赖 核心代码 3. okhttp3方式 Mav ...
- Java生成微信小程序二维码、上传至阿里云OSS
依赖 <!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifac ...
- java生成微信小程序二维码(自定义带参)
准备工作: 1:获取微信小程序apiKey 2:获取微信小程序密钥 3:获取微信小程序页面链接 pom依赖: <dependency><groupId>com.alibaba& ...
- java获取微信小程序二维码
java获取微信小程序二维码 近期正好遇到了,随手记录下 首先获取微信小程序二维码需要小程序的appid 以及secret 然后根据appid和secret去获取小程序的token 即 access_ ...
- java获取微信小程序二维码图片并保存到本地
java获取微信小程序二维码保存到本地并返回图片,下次如果检查到本地有图片,那么就返回本地的图片,不再发起请求,否则重新发起请求并保存到本地,直接看代码吧. 获取access_token的方法可以参考 ...
- 生成微信小程序二维码(携带参数跳转指定页面)
需求:生成微信小程序二维码并携带参数,扫码跳转指定页面 获取WxMaService对象 WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl ...
- java创建微信小程序二维码
创建微信小程序二维码有两个接口需要 一个是获取tocken的接口 一个是生成二维码的接口 获取tocken接口 //**********填写你的小程序appid 和 secret public sta ...
- c# 生成微信小程序二维码
二维码生成 CreateWxCode("id=117", "pages/bookcheck/bookchecktime/bookchecktime", &quo ...
最新文章
- SystemCenter2012SP1实践(13)虚拟存储的配置
- 菜鸟成长之路05/06/07
- docker容器间双向通信(基于Bridge网桥)
- python和sqlserver_利用python实现mysql数据库向sqlserver的同步
- 如何将 Microsoft Bot Framework 链接至微信公共号
- python合并txt文本_Python实现将目录中TXT合并成一个大TXT文件的方法
- vuejs项目性能优化 - 总结篇
- 一些需要禁用的PHP危险函数
- java gof_java GOF23设计模式-简单工厂模式进阶
- 图片懒加载、ajax异步调用数据、lazyload插件的使用
- matlab 读取 Microsoft Excel 电子表格文件不推荐使用 xlsread
- stm32 薄膜键盘原理_stm32F4----薄膜4*4矩阵键盘读取(七)
- PHPStudy安全配置
- linux配置tp路由器,手把手图解教程tplink r402m路由器配置
- c语言十六位正整数表示,C语言学习(一)概述,数据类型
- 序列(sequence)(Python入门十二)
- linux系统设置自动拨号上网
- win10计算机运行在哪里,Win10运行在哪(开始、快捷键、所有应用)
- android 解压rar5,RAR解压缩软件_Winrar官方版 V5.50.42 安卓去广告版
- 生产者剩余的几何解释
热门文章
- 系统中一键改变字体大小和样式的方法
- python中可变参数args传入函数时储存的类型是_[转载]Python中函数的参数定义和可变参数*args与**args...
- 方差 标准差_均值、方差、标准差、协方差、相关系数的概念及意义
- 多启动移动硬盘启动盘——目前最好的pe系统
- 易语言PHP非对称加密,RSA非对称加密通信源码
- C盘太满扩容办法(超详细绝不骗人 谁都能也能轻易上手)
- 从计算机的角度讲计算科学的本质,心理学练习题及答案
- C++ builder的文件操作
- ASP.NET用户个性化设置Profile——配置2
- linux上ant的安装