微信带参数的小程序码生成并上传到七牛云(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)错误.这个时候我们要修改 ...
随机推荐
- ABC193F Engines
简要题意 给出 \(n\) 个向量,求其子集的和的最大模长. \(1 \leq n \leq 100\) 思路 先说结论:选出的几个向量,一定是极角排序后的某一段(环形)区间. 这个不难感性理解,比如 ...
- 刷题笔记——3002.买图书 & 2763.计算(a+b)/c的值
题目1 3002.买图书 代码 while True: try: n,m=map(float,input().strip().split()) if(n==10 and m==1): print('{ ...
- C++获取含有中文字符的string长度
:前言 造车轮的时候要用到中文字符串的长度辨别,发现char的识别不准,进行了一番研究. > 开始研究 在Windows下,中文字符在C++中的内存占用为2字节,此时采用字符串长度获取函数得到的 ...
- angular8实现前端携带cookie发送给后端+nodejs获取前端发送的cookie
1.前端测试代码angular8 // 测试代码 testCookie() { const url = 'http://10.11.11.11:3000/test/cookie' const para ...
- SpringBoot项目动态定时任务之 ScheduledTaskRegistrar(解决方案一)
前言 在做SpringBoot项目的过程中,有时客户会提出按照指定时间执行一次业务的需求. 如果客户需要改动业务的执行时间,即动态地调整定时任务的执行时间,那么可以采用SpringBoot自带 ...
- 《Terraform 101 从入门到实践》 第一章 Terraform初相识
<Terraform 101 从入门到实践>这本小册在南瓜慢说官方网站和GitHub两个地方同步更新,书中的示例代码也是放在GitHub上,方便大家参考查看. 初闻不知Terraform, ...
- 洛谷 P3137 [USACO16FEB]Circular Barn S
题目链接 本蒟蒻的第一篇题解,写得不好请指出,敬请谅解 题意: 有\(n\)头奶牛,分布在一些房间,某些房间可能有多头牛,要让这些牛按顺时针移动,求使每一个房间刚好有一个奶牛的最小花费 花费计算:如果 ...
- ubuntu18.04下联想电脑不能打开wifi
一.问题描述: 本人使用联想拯救者14IFI笔记本在安装Ubuntu系统时会出现无线硬件开关关闭的问题,当然也就无法连网(Wi-Fi). (最好先使用 sudo rfkill unblock all) ...
- 学习Vue过程中遇到的问题---code: 'MODULE_NOT_FOUND'
在学习安装脚手架Vue-cli过程中 步骤为: 第一步(仅第一次执行):全局安装@vue/cli. npm install -g @vue/cli 第二步:切换到你要创建项目的目录,然后使用命令创建项 ...
- jupyter环境搭建
前言 jupyter,一个交互式的笔记本,进行数据分析时比pycharm要好用和专业一些. jupyter安装的正确姿势 在别的教程里,他们讲的是通过pip install jupyter或者brew ...