Java后台生成微信小程序码并以流的形式返回给前端
后端代码
- 获取access_token
import net.sf.json.JSONObject;public class WeChatUtil {/*** 获取token*/private static String ACCESSTOKENURL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appId}&secret={appSecret}";/*** 获取登陆的token** @param appId* @param appSecret* @return* @throws Exception*/public static String getAccessToken(String appId, String appSecret) {String url = ACCESSTOKENURL.replace("{appId}", appId).replace("{appSecret}", appSecret);JSONObject jsonObject = CommonUtil.httpsRequest(url, "GET", null);if (null != jsonObject) {return jsonObject.getString("access_token");}return null;}
}
- 生成图片流
package com.ruoyi.common.utils;import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import net.sf.json.JSONObject;public class QrCodeUtils {/*** 生成图片流* @param url* @param paraMap* @return* @throws Exception*/public static byte[] getminiqrQr(String url, Map<String, Object> paraMap) throws Exception {byte[] result = null;HttpPost httpPost = new HttpPost(url);httpPost.addHeader("Content-Type", "application/json");// 设置请求的参数JSONObject postData = new JSONObject();for (Map.Entry<String, Object> entry : paraMap.entrySet()) {postData.put(entry.getKey(), entry.getValue());}httpPost.setEntity(new StringEntity(postData.toString(), "UTF-8"));HttpClient httpClient = HttpClientBuilder.create().build();HttpResponse response = httpClient.execute(httpPost);HttpEntity entity = response.getEntity();result = EntityUtils.toByteArray(entity);return result;}
}
- 后台接口返回流到前端
import javax.servlet.http.HttpServletResponse;import java.io.OutputStream;import java.util.Map;import java.util.HashMap;@GetMapping("/getInviteCode")@ResponseBodypublic void getInviteCode(@RequestParam(value = "id") String id,HttpServletResponse response) {try {String accessToken = WeChatUtil.getAccessToken(appId, appSecret);byte[] qrCodeBytes = null;Map<String, Object> paraMap = new HashMap<String, Object>();String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+ accessToken ;// 二维码携带参数 不超过32位 参数类型必须是字符串paraMap.put("scene", id); // 存入的参数paraMap.put("path", "pages/index/index");qrCodeBytes = QrCodeUtils.getminiqrQr(url, paraMap);response.setContentType("image/jpg");// 写入response的输出流中OutputStream stream = response.getOutputStream();stream.write(qrCodeBytes);stream.flush();stream.close();} catch (Exception e) {e.printStackTrace();}}
前端代码
uni.request({url: baseUrl+'getInviteCode?id='+that.id,method: "GET",responseType: 'arraybuffer',success: function(res) {uni.hideToast();let datas = res.dataconst arrayBuffer = new Uint8Array(datas)that.codeImg = "data:image/png;base64," + uni.arrayBufferToBase64(arrayBuffer) //这里需要添加前缀},fail(res) {console.log(res, '错误')}})
相关文章:
Java后台生成微信小程序码并以流的形式返回给前端
后端代码 获取access_token import net.sf.json.JSONObject;public class WeChatUtil {/*** 获取token*/private static String ACCESSTOKENURL "https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credential&appid{appId}&secret{appSecret}"…...
AtcoderABC226场
A - Round decimalsA - Round decimals 题目大意 给定一个实数X,它最多可以使用三位小数表示,而且X的小数点后有三位小数。将X四舍五入到最接近的整数并打印结果。 思路分析 可以使用round函数进行四舍五入 知识点 round(x) 是一个用来对数字进行四…...
Linux知识点 -- VS Code远程连接服务器协助开发
Linux知识点 – VS Code远程连接服务器协助开发 文章目录 Linux知识点 -- VS Code远程连接服务器协助开发一、VS Code的使用1.使用VS Code进行C语言编译与运行2.使用VS Code进行C代码的编译与运行 二、使用VS Code连接云服务器三、使用VS Code进行GDB调试 一、VS Code的使用 1…...
blender基础认识(选项开关、工具栏、视图等)
文章目录 引言一、大纲选项开关和保存启动文件1. 大纲选项1. 禁用选中2. 视图影藏3. 视图禁用4. 渲染禁用 2. 保存启动文件 二、工具栏和侧边栏1. 左侧工具栏2. 右侧工具栏 三、视图1. 视角2. 缩放3. 拖拽4. 摄像机视角5. 切换正交视图6. 局部视图7. 显示隐藏 四、添加删除物体…...
React Hooks 中的属性详解
React Hooks 是 React 16.8 版本中新增的特性,允许我们在不编写 class 的情况下使用 state 和其他的 React 特性。Hooks 是一种可以让你在函数组件中“钩入” React 特性的函数。以下是一些常用的 React Hooks,并附有详细的用法和代码示例。 1. useStat…...
工作遇到问题与解决办法(一)
一、构建父子工程 父 <groupId>com.ruoyi</groupId> <artifactId>ruoyi</artifactId> <version>3.8.5</version> <modules><module>ruoyi-admin</module><module>ruoyi-framework</module><module>…...
综合与新综合与新型交通发展趋势[75页PPT]
导读:原文《综合与新综合与新型交通发展趋势[75页PPT]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需…...
【树形DP+换根思想】2022牛客多校加赛 H
登录—专业IT笔试面试备考平台_牛客网 题意: 思路: 这个虽然是树形DP,却用了换根的思想.... 首先,后缀0的个数可以转化成min(cnt2,cnt5),其中cnt2为2的因子个数,cnt5为5的因子个数 然后进行DP 设dp[u]…...
Gitlab CI/CD笔记-第二天-GitOps的流水线常用关键词(1)
一、常用关键词 在Gitlab项目的根目录需要创建一个 .gitlab-ci.yaml的文件。 这个文件就是定义的流水线。Call :"Pipeline as code" 二、这条流水线怎么写? 一、掌握常用的关键词即可。 1.关键词分类 1.全局关键词 Global Keywards 2.任务关键词…...
Spring Boot3.0(一):入门篇
什么是 Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 用我的话来理解,就是 Spring…...
各种排序333
冒泡排序 n方 public static void BubbleSort(int[] arr) {int n = arr.Length;for (int i = 0; i < n - 1; i++){for (int j = 0; j < n - i - 1; j++){if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}} }选择排序 n方 publ…...
[C++] 类与对象(中)完整讲述运算符重载示例 -- 日期类(Date) -- const成员
目录 1、前言 2、全缺省的构造函数 3、打印接口 4、拷贝构造 5、赋值运算符重载(operator) 5.1赋值重载是默认成员函数,重载格式: 5.2 赋值重载不能为全局函数 5.3 编译器默认生成 6、析构函数 7、operator> 8、ope…...
wonderful-sql 作业
Sql 作业 作业1: 答: create table Employee (Id integer not null, Name varchar(32) , Salary integer, departmentId integer, primary key (Id) );create table Department( Id integer primary key, Name varchar(30) not null );insert into emp…...
Go学习第六天
Golang变量内置pair结构详细说明 变量包括(type, value)两部分type 包括 static type和concrete type. 简单来说 static type是你在编码是看见的类型(如int、string),concrete type是runtime系统看见的类型类型断言能否成功,取决…...
opencv-34 图像平滑处理-2D 卷积 cv2.filter2D()
2D卷积是一种图像处理和计算机视觉中常用的操作,用于在图像上应用滤波器或卷积核,从而对图像进行特征提取、平滑处理或边缘检测等操作。 在2D卷积中,图像和卷积核都是二维的矩阵或数组。卷积操作将卷积核在图像上滑动,对每个局部区…...
Java 克隆技术详解,深拷贝与浅拷贝的区别及实现
什么是克隆,为什么在编程中使用克隆 克隆是指创建一个对象的副本,使得新创建的对象在内容上与原始对象相同。在编程中,克隆是常用的技术之一,它具有以下几个重要用途和优势: 复制对象:使用克隆可以创建一个…...
包装器function
std::function模板类是一个通用的可调用对象的包装器,用简单的、统一的方式处理可调用对象。 template<class _Fty> class function…… _Fty是可调用对象的类型,格式:返回类型(参数列表)。 包含头文件:#include <functi…...
Django Rest_Framework(三)
文章目录 1. 认证Authentication2. 权限Permissions使用提供的权限举例自定义权限 3. 限流Throttling基本使用可选限流类 4. 过滤Filtering5. 排序Ordering6. 分页Pagination可选分页器 7. 异常处理 ExceptionsREST framework定义的异常 8. 自动生成接口文档coreapi安装依赖设置…...
总结 IO、存储、硬盘、文件系统相关常识
目录 一、IO是什么? 二、存储 三、硬盘 四、文件系统 4.1 文件目录和组织方式 4.2 文化路径 4.3 文件类型 4.4 文件系统操作 一、IO是什么? IO是英文Input/Output的缩写,指输入/输出。在计算机科学中,IO通常指计算机与外部设备或…...
JavaScript、深入浅出Node.js前端技能汇总
JavaScript 前端技能汇总 Frontend Knowledge Structure 深入浅出Node.js 书籍pdf 《深入浅出Node.js》的相关代码 Javascript&jQuery教程 pdf html & css教程 pdf 高性能JavaScript_中英双语版 pdf 跳坑之js调用另一个js文件中函数 方法1; 在html文件中加入两…...
C++引用:高效编程的技巧
C引用的本质与特性 引用是已存在变量的别名,与变量共享同一内存地址。声明时必须初始化且不可更改绑定对象: int x 10; int& ref x; // ref成为x的别名 ref 20; // 修改x的值引用与指针的核心区别 初始化要求:引用必须声明时初始…...
三步轻松获取国家中小学智慧教育平台电子课本PDF:高效教学资源下载指南
三步轻松获取国家中小学智慧教育平台电子课本PDF:高效教学资源下载指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内…...
Pixel Aurora Engine真实作品:支持物理位移反馈的UI交互+生成图联动演示
Pixel Aurora Engine真实作品:支持物理位移反馈的UI交互生成图联动演示 1. 像素极光创意引擎介绍 Pixel Aurora Engine(像素极光引擎)是一款融合AI生成技术与复古游戏美学的创意工具。这款"虚拟游戏机"采用8-bit像素风格界面&…...
FinalBurn Neo技术指南:现代设备复刻街机厅沉浸体验全攻略
FinalBurn Neo技术指南:现代设备复刻街机厅沉浸体验全攻略 【免费下载链接】FBNeo FinalBurn Neo - We are Team FBNeo. 项目地址: https://gitcode.com/gh_mirrors/fb/FBNeo 如何在现代设备上复刻街机厅的沉浸体验?FinalBurn Neo(FBN…...
从Simulink到实物:单闭环直流调速仿真如何指导真实的Arduino/STM32控制?
从Simulink到Arduino:如何将直流电机控制算法从仿真落地到真实硬件 当你第一次在Simulink中看到那个完美的电机转速响应曲线时,那种成就感是无可替代的。但很快,一个更迫切的问题出现了:这些漂亮的仿真结果,如何变成手…...
Hunyuan-MT-7B多语种能力:Pixel Language Portal在联合国六种官方语言互译中的表现
Hunyuan-MT-7B多语种能力:Pixel Language Portal在联合国六种官方语言互译中的表现 1. 引言:当像素冒险遇见多语言翻译 在全球化交流日益频繁的今天,语言障碍仍然是横亘在不同文化之间的无形壁垒。传统翻译工具往往给人冰冷、机械的使用体验…...
Ostrakon-VL终端效果展示:深夜食堂风格终端打印输出全过程录屏
Ostrakon-VL终端效果展示:深夜食堂风格终端打印输出全过程录屏 1. 像素特工终端概览 在零售与餐饮行业的数字化转型浪潮中,我们开发了这款基于Ostrakon-VL-8B多模态大模型的Web交互终端。与传统工业级UI不同,我们采用了高饱和度的像素艺术风…...
C++ 智能指针的生命周期陷阱
C智能指针的生命周期陷阱:隐藏的坑与破解之道 在现代C开发中,智能指针作为资源管理的利器,极大减轻了开发者手动管理内存的负担。看似简单的shared_ptr、unique_ptr和weak_ptr背后,却隐藏着微妙的生命周期陷阱。这些陷阱可能导致…...
**雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现**在物联网(IoT)飞速发展的今天,传统云
雾计算中的边缘智能:基于Python的轻量级任务调度系统设计与实现 在物联网(IoT)飞速发展的今天,传统云计算模式已难以满足低延迟、高带宽和实时响应的需求。**雾计算(Fog Computing)**作为云与终端设备之间的…...
Win11Debloat开源工具:焕新Windows系统体验的极简优化指南
Win11Debloat开源工具:焕新Windows系统体验的极简优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter an…...
