微信带参数的小程序码生成并上传到七牛云(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)错误.这个时候我们要修改 ...
随机推荐
- python之路55 cookie与session 操作 把模块变成字符串进行导入
django中间件三个了解的方法 1.process_view 路由匹配成功之后执行视图函数/类之前自动触发(顺序同process_request) 2.process_exception 视图函数/ ...
- MySql树形结构(多级菜单)查询设计方案
背景 又很久没更新了,很幸运地新冠引发了严重的上呼吸道感染,大家羊过后注意休息和防护 工作中(尤其是传统项目中)经常遇到这种需要,就是树形结构的查询(多级查询),常见的场景有:组织架构(用户部门)查询 ...
- 深入理解C++虚函数底层机制和RTTI运行时类型识别
当调用一个虚函数时,被执行的代码必须与调用函数对象的动态类型相一致:指向对象的指针或引用的类型是不重要的,编译器是如何高效地提供这种行为呢?大多数编译器是使用virtual table和virtual ...
- Linux基础操作-01
Linux操作系统 很多IC设计的EDA工具都是在Linux系统中进行运行的,在IC设计的从业者都需要熟练掌握Linux操做.可以不掌握Linux原理,但是操作要熟练. Linux 操作系统的特点 多 ...
- Google Cloud Spanner 究竟是什么?
谷歌于2017年推出的Google Cloud Spanner,原是谷歌内部使用的一个数据服务,后来又成为了谷歌云平台上搭建的数据库服务. Google Cloud Spanner 是一种数据库,它结 ...
- C# 线程查漏补缺
进程和线程 不同程序执行需要进行调度和独立的内存空间 在单核计算机中,CPU 是独占的,内存是共享的,这时候运行一个程序的时候是没有问题.但是运行多个程序的时候,为了不发生一个程序霸占整个 CPU 不 ...
- win32com操作word API精讲 第十集 Paragraphs & Paragraph接口 (一)
本课程<win32com操作word API精讲&项目实战>以视频为主,文字为辅,公众号ID:一灯编程 在word编程中,Range和Paragraph(s)接口无愧于劳模接口的称 ...
- 华为云服务器8000通道映射到本地,本地浏览器访问jupyter
首先你得有个华为云服务器(这不是废话) 第二你得开放它的端口(重点) 第三打开本地cmd 输入ssh -L [客户端IP或省略]:[客户端端口]:[服务器IP]:[服务器端口] [登陆服务器的用户名] ...
- (一) MdbCluster分布式内存数据库——基础架构介绍
(一) MdbCluster分布式内存数据库--基础架构介绍 这个项目是怎么开始的我已经有些记不清楚了,大概是原来的内存数据库很不好用,一次次地让我们踩坑,我又自以为是地觉得可以做一个更好的出来. ...
- DownKyi安装使用教程
哔哩下载姬 哔哩下载姬是一个简单易用的哔哩哔哩视频下载工具,具有简洁的界面,流畅的操作逻辑. 支持批量下载哔哩哔哩视频 支持批量下载bilibili视频. 哔哩下载姬可以下载几乎所有的B站视频,并输出 ...