微信带参数的小程序码生成并上传到七牛云(java)
在大家看正式内容之前请耐心的听我把这段话说完:我冒昧的猜一下,你为了解决问题估计已经看了很多文章了,如果这边文章能给你带来帮助,不胜荣幸,如果有错误也请批评指正,共同进步,我之前在完成这个功能之前,从csdn上看了不少坑文章,最多的一种情况就是:大体看着还行,仔细一看里面用到了他自己封装的一个类不发出来,导致不能用,问作者也不叼咱们的那种,要么就是四处抄的或者根本搜不到。如果这边文章对你有用,请多多支持!下面的代码我就直接开始在重要的地方加上注释,方便大家阅读,直接上正文:
第一首先分成两步:第一步就是生成二维码,但是不展示出来,第二,生成二维码之后直接存到七牛云上面。
首先生成二维码需要三个参数 这个不废话 其中accesstoken需要通过另外两个参数发送请求获取,下面直接粘贴获取accesstoken的代码
public String postToken() throws Exception {
String APIKEY = "";//小程序id
String SECRETKEY = "";//小程序密钥
String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+APIKEY+"&secret="+SECRETKEY;
URL url = new URL(requestUrl);
// 打开和URL之间的连接
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
// 设置通用的请求属性
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setUseCaches(false);
connection.setDoOutput(true);
connection.setDoInput(true);
// 得到请求的输出流对象
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.writeBytes("");
out.flush();
out.close();
// 建立实际的连接
connection.connect();
// 定义 BufferedReader输入流来读取URL的响应
BufferedReader in = null;
if (requestUrl.contains("nlp"))
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
else
in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
String result = "";
String getLine;
while ((getLine = in.readLine()) != null) {
result += getLine;
}
in.close();
JSONObject jsonObject = JSON.parseObject(result);
String accesstoken=jsonObject.getString("access_token");
return accesstoken;
}
相信上面的方法,无数人写过,所以不废话,下面在粘贴获取小程序码并上传到七牛云的方法(注意里面有干货,可能有大家需要注意的地方)
String accessToken = null;
try {
accessToken = postToken();
} catch (Exception e) {
e.printStackTrace();
}
;
try {
//首先做好拼接小程序码的请求路径 注意里面的参数是上一段代码的执行结果
URL url = new URL(null, "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken, new sun.net.www.protocol.https.Handler()); 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", l);
paramJson.put("page", "pages/index/index");
paramJson.put("width", 430);
paramJson.put("auto_color", true); printWriter.write(paramJson.toString());
// flush输出流的缓冲
printWriter.flush();
//开始获取数据 其实在这里已经把小程序码获取到了
BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
System.out.println(bis);
//在这里你可以在你的桌面上或者什么文件夹下面展示一下,看一下有没有具体的获取到,基本上只要你请求的参数是对的,那就99.99%的可以或许到小程序的码// String sss = "http://123.57.234.151/D:qcxx/"+l+".png";
// String s = "/home/image/"+ l + ".png";
// OutputStream os = new FileOutputStream(new File(s));
// int len;
// byte[] arr = new byte[1024];
// while ((len = bis.read(arr)) != -1){
// os.write(arr, 0, len);
// os.flush();
// }
//以上注释的代码为检验是否真的获取到了小程序,是为了防止没有东西上传到七牛云里面,可以不写
// os.close();
//你的七牛云的参数账号密码,以及空间名称等等 这个要是不会真帮不了你了
String ACCESS_KEY = "";
String SECRET_KEY = "";
String bucketName = "";
//创建返回的集合,其实无所谓我是直接写了要不要无所谓,如果你别的地方还需要调用最好存一下
Map<String, Object> retMap = new HashMap<String, Object>();
// 构造一个带指定对象的配置类 现在一般都写这个Region,如果你看见的是Zone那个请自动忽略,之前是,将来可能狗屁不是
// 在这里请允许我说一句脏话,哎呀jb,卧槽,写Zone.xxx的都他妈耍流氓,还他妈能用吗?比我这个版本都要老。
Configuration cfg = new Configuration(Region.region1()); //注意注意注意: 是什么地区要选好,不然会上传失败 好多人都在写那个Zone.zone1 之类的,说实话没吊用,都快过期了
// 其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
try {
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
String upToken = auth.uploadToken(bucketName);
try {
//在这里说一下几个参数 也是个重点,其中第一个参数是带有你小程序二维码的流(只要是inputStream及其子类都可以,第二个是你指定的上传名称)
Response response = uploadManager.put(httpURLConnection.getInputStream(), null, upToken, null, null);
// 解析上传成功的结果
System.out.println(response);
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
//至此全部上传完毕,下面的就是存上传路径路径等鸡毛小事,putRet.key 这个就是你的上传路径,前面加上你在七牛云里面配置的访问前缀就可以直接通过浏览器访问了
retMap.put("hash", putRet.hash);
retMap.put("filePath",putRet.key);
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
ex2.printStackTrace();
}
}
} catch (Exception ex) {
ex.printStackTrace();
} } catch (Exception e) {
e.printStackTrace();
}
至此全部完毕,如果有什么不会的欢迎加我qq:330737943,我给大家说明,非常抱歉耽误大家时间了,希望大家工作顺利,家庭幸福,再一次感谢大家的阅读!
微信带参数的小程序码生成并上传到七牛云(java)的更多相关文章
- 微信小程序简单封装图片上传组件
微信小程序简单封装图片上传组件 希望自己 "day day up" -----小陶 我从哪里来 在写小程序的时候需要上传图片,个人觉得官方提供的 Uploader 组件不是太好用, ...
- 微信小程序码生成及canvas绘制
吐槽:某厂的开发文档写的跟屎一样 1.后台返回accessToken,小程序请求获取小程序码 uni.request({ url: 'https://api.weixin.qq.com/wxa/get ...
- 微信小程序实现图片是上传、预览功能
本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法,分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 1.可以调用相机也可以从本地相册选择 2.本地实现 ...
- 微信小程序:多张图片上传
最近在写小程序的相册,需要多张图片的上传.因为小程序不支持数组的多张图片同时上传,然后根据自己的需求+借鉴网上各位大神的案例,总算搞定.分享下,不足之处,多多指教哦 页面wxml: <form ...
- 微信小程序--更换用户头像/上传用户头像/更新用户头像
changeAvatar:function (){ var that=this; wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'c ...
- Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端
要搞一个小型的cms内容发布系统 因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查 微信小程序其实给我们提供了 ...
- uniapp小程序图片前端压缩上传
目录 1,前言 2,实现代码 1,前言 这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,我这边利用了uniapp的文件接口,使用canvas做了一个压缩上传的功能,目前已上线 ...
- PHP生成二维码并上传到七牛云
参考资料 qr-code生成二维码 七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...
- 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题
一.修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要 ...
- 修改Nginx配置参数解决http状态码:413上传文件大小限制问题
修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要修改 ...
随机推荐
- 《深度探索C++对象模型》第六章 执行期语意学
new运算符和delete运算符 运算符new看似是一个简单的运算,比如: int *pi=new int(5); 但是它实际由两个步骤完成: 1.通过适当的new运算符函数实体,配置所需的内存: / ...
- ZROI2
题解 ZROI2 暑假集训的第二次模拟赛,成绩..更加惨不忍睹.又滑了rk20,(#`-_ゝ-)(sk) 链染色 考场上想出了半正解,思路上期望得分80pts,代码得分0pts,(我这辣鸡代码能力╯︿ ...
- 03-Verilog语法
Verilog语法 1 Register 组合逻辑-->寄存器-->组合逻辑-->寄存器 Register是一个变量,用于存储值,并不代表一个真正的硬件DFF. reg A,C; / ...
- ZXing CaptureActivity黑屏问题
关于zxing captureActivity黑屏的问题,我在网上搜索一下,结果发现几乎没有这方面的资料.后来自己用了半天时间,独步跟踪调试,查看相机类的代码,最后发现了一点问题,就是关闭相机的时候没 ...
- NG-ZORRO + Angular11增加自定义全局样式,不影响其他页面全局样式,仅作用于当前页面
实现只需要两步 ts import { ViewEncapsulation } from '@angular/core';// 关键代码 @Component({ selector: 'app-tes ...
- Grafana 系列文章(九):开源云原生日志解决方案 Loki 简介
简介 Grafana Labs 简介 Grafana 是用于时序数据的事实上的仪表盘解决方案.它支持近百个数据源. Grafana Labs 想从一个仪表盘解决方案转变成一个可观察性 (observa ...
- Hive删除分区名称中含有特殊字符
先说方案:通过show partitions和hdfs url看到的都不是真正的分区名称,都是经过URI重新编码的,访问这些分区应该使用分区名称的原始字符串. 场景描述 当我们在SQL语句中使用变量时 ...
- 12月9日内容总结——静态文件以及配置、form表单属性的作用、request对象、python连接数据库和Django连接数据库、ORM的基础知识介绍
目录 一.静态文件 1.静态文件概念 2.资源访问 3.静态文件资源访问 二.静态文件相关配置 1.接口前缀 2.接口前缀动态匹配 三.form表单 action属性 method属性 四.reque ...
- springcloud12-spring cloud stream
1.基础说明 官网:https://spring.io/projects/spring-cloud-stream#overview 文档:https://docs.spring.io/spring ...
- 【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩"狂飙"的评论
目录 一.背景介绍 二.爬虫代码 2.1 展示爬取结果 2.2 爬虫代码讲解 三.可视化代码 3.1 读取数据 3.2 数据清洗 3.3 可视化 3.3.1 IP属地分析-柱形图 3.3.2 评论时间 ...