在大家看正式内容之前请耐心的听我把这段话说完:我冒昧的猜一下,你为了解决问题估计已经看了很多文章了,如果这边文章能给你带来帮助,不胜荣幸,如果有错误也请批评指正,共同进步,我之前在完成这个功能之前,从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)的更多相关文章

  1. 微信小程序简单封装图片上传组件

    微信小程序简单封装图片上传组件 希望自己 "day day up" -----小陶 我从哪里来 在写小程序的时候需要上传图片,个人觉得官方提供的 Uploader 组件不是太好用, ...

  2. 微信小程序码生成及canvas绘制

    吐槽:某厂的开发文档写的跟屎一样 1.后台返回accessToken,小程序请求获取小程序码 uni.request({ url: 'https://api.weixin.qq.com/wxa/get ...

  3. 微信小程序实现图片是上传、预览功能

    本文实例讲述了微信小程序实现图片上传.删除和预览功能的方法,分享给大家供大家参考,具体如下: 这里主要介绍一下微信小程序的图片上传图片删除和图片预览 1.可以调用相机也可以从本地相册选择 2.本地实现 ...

  4. 微信小程序:多张图片上传

    最近在写小程序的相册,需要多张图片的上传.因为小程序不支持数组的多张图片同时上传,然后根据自己的需求+借鉴网上各位大神的案例,总算搞定.分享下,不足之处,多多指教哦 页面wxml: <form ...

  5. 微信小程序--更换用户头像/上传用户头像/更新用户头像

    changeAvatar:function (){ var that=this; wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'c ...

  6. Day12-微信小程序实战-交友小程序-搭建服务器与上传文件到后端

    要搞一个小型的cms内容发布系统 因为小程序上线之后,直接对数据库进行操作的话,慧出问题的,所以一般都会做一个管理系统,让工作人员通过这个管理系统来对这个数据库进行增删改查 微信小程序其实给我们提供了 ...

  7. uniapp小程序图片前端压缩上传

    目录 1,前言 2,实现代码 1,前言 这次项目中做了一个图片上传,要求是大于2MB的就压缩成2MB一下的再上传,我这边利用了uniapp的文件接口,使用canvas做了一个压缩上传的功能,目前已上线 ...

  8. PHP生成二维码并上传到七牛云

    参考资料 qr-code生成二维码    七牛云上传图片 实现步骤 //拿到插入后的id $res = DB::table('book_book')->insertGetId($data); i ...

  9. 修改Nginx与Apache配置参数解决http状态码:413上传文件大小限制问题

    一.修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要 ...

  10. 修改Nginx配置参数解决http状态码:413上传文件大小限制问题

    修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制,默认是1M. 当超过大小的时候会报413(too large)错误.这个时候我们要修改 ...

随机推荐

  1. Docker 基础 - 2

    容器操作系统类型 Busybox 集成了一百多个最常用 Linux 命令和工具的软件工具箱. 包含cat echo grep find mount telnet 等 Busybox 是Linux 系统 ...

  2. vue小技巧-vue引入样式、修改难以修改的子组件内部标签样式

  3. djiango框架推导过程,jinja2模板语法,jiango简介,基本操作命令

    djiango框架推导过程,jinja2模板语法,jiango简介,基本操作命令 一.web框架前戏 web 框架可以理解为是基于会联网的web服务端>>>socket服务端 1.w ...

  4. Java 进阶P-2.5+P-2.6

    包 Java 包(package) 为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间. 包的作用 1.把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2.如同文件夹一 ...

  5. Linux密钥认证

    网站集群批量管理-秘钥认证 一.概述 管理更加轻松:两个节点,通过秘钥形式进行访问,不需要输入密码,单向 应用场景: 一些服务在使用前要求做秘钥认证 手动写批量管理脚本 名字:秘钥认证,免密码登录,双 ...

  6. 打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value inPackages\UserJSONsublime-settings:13:17

    问题:打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value inPackages\UserJSONsublime- ...

  7. FAQ selenium无法click的一个案例分享(1)

    案例描述 http://sahitest.com/demo/php/fileUpload.htm 来自助教咨询 点击网页的第一个选择文件,如图 示例代码  from selenium import w ...

  8. GitHub实用开源项目

    第一款 JSON Crack JSON Crack 是一个很方便的 JSON 数据可视化工具. 该项目不是简单的展示 JSON 数据,而是将其转化为类似思维导图的形式,支持放大/缩小.展开/收缩.搜索 ...

  9. 模型预处理层介绍(1) - Discretization

    预处理的作用主要在于将难以表达的string或者数组转换成模型容易训练的向量表示,其中转化过程大多是形成一张查询表用来查询. 常见的预处理方式包括: class Discretization: Buc ...

  10. RabbitMQ.Client.Exceptions.BrokerUnreachableException:“None of the specified endpoints were reachabl

    1.问题复现 RabbitMQ新建账户进行具体操作时报如题错误,没有一个指定的端点是可到达的 2.解决办法 ① 控制台命令进入sbin所在文件夹 ② 输入命令设置权限 rabbitmqctl set_ ...