java 生成微信的二维码 工具类
package com.app.wii.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicHeader;
import org.apache.http.protocol.HTTP;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.app.wx.webinterface.aotuzuche.InternalController;
import com.ods.common.util.ComFileManager;
import com.ods.common.util.HttpUtil;
import com.ods.common.util.PropUtil;
import com.ods.common.util.StringUtil;
import com.ods.service.impl.PrimaryKeyServiceImpl;
import net.sf.json.JSONObject;
public class QrCodeUtil {
private static Logger logger = LogManager.getLogger(QrCodeUtil.class.getName());
/**
* 生成二维码
* @param appid
* @param appsecret
* @param page
* @return
*/
public static String createQrcode(String appid,String appsecret,String page,String scene){
String result = "";
try {
String tokenurl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
tokenurl = tokenurl.replace("APPID", appid).replace("SECRET", appsecret);
logger.error("生成二维码的appid:"+appid);
String dd = HttpUtil.sendGet(tokenurl);
System.out.println(dd);
String access_token = (String) JSONObject.fromObject(dd).get("access_token");
String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN".replace("ACCESS_TOKEN", access_token);
Map<String, Object> map = new HashMap<String, Object>();
map.put("scene", scene);
map.put("page", page);
map.put("width", 430);
map.put("auto_color", false);
result = httpPostWithJSON(url, JSONObject.fromObject(map).toString(), "QRcode");
} catch (Exception e) {
logger.error("创建二维码error"+e);
}
return result;
}
public static String httpPostWithJSON(String url, String json, String id) throws Exception {
String result = null;
try {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
RequestConfig requestConfig = null;
/**
* 启用代理
*/
String proxyIp = PropUtil.getPropertyValue("ods.http.proxy.server", "10.74.46.21:8002").replace("\"", "");
String[] proxIpArray = proxyIp.split(":");
String proxyHost = proxIpArray[0];
int proxyPort = Integer.valueOf(proxIpArray[1]);
HttpHost proxy = new HttpHost(proxyHost, proxyPort);
requestConfig = RequestConfig.custom().setProxy(proxy).build();
httpPost.setConfig(requestConfig);
httpPost.addHeader(HTTP.CONTENT_TYPE, "application/json");
StringEntity se = new StringEntity(json);
se.setContentType("application/json");
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "UTF-8"));
httpPost.setEntity(se);
// httpClient.execute(httpPost);
HttpResponse response = httpClient.execute(httpPost);
logger.error("生成非车代付二维码的响应response:"+response);
if (response != null) {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
InputStream instreams = resEntity.getContent();
File uploadSysUrl = new File(".\\" + "tempFile");
File saveFile = new File(uploadSysUrl.getCanonicalPath() + id + ".png"); // 判断这个文件(saveFile)是否存在
if (!saveFile.getParentFile().exists()) { // 如果不存在就创建这个文件夹
saveFile.getParentFile().mkdirs();
}
saveToImgByInputStream(instreams, uploadSysUrl.getCanonicalPath(), id + ".png");
// 建立数据的上传通道
FileInputStream fileInputStream = new FileInputStream(saveFile);
String returnStr = ComFileManager.FileUpload(fileInputStream, "scanimeg.png", "wii", "car_quote");
JSONObject objectscanurl = JSONObject.fromObject(returnStr);
result = (String) objectscanurl.get("id");
deleteUploadFile(saveFile.toString());
}
}
httpPost.abort();
} catch (Exception e) {
logger.error("httpPost"+e);
}
return result;
}
/*
* @param instreams 二进制流
*
* @param imgPath 图片的保存路径
*
* @param imgName 图片的名称
*
* @return 1:保存正常 0:保存失败
*/
public static int saveToImgByInputStream(InputStream instreams, String imgPath, String imgName) {
int stateInt = 1;
if (instreams != null) {
try {
File file = new File(imgPath + imgName);// 可以是任何图片格式.jpg,.png等
FileOutputStream fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int nRead = 0;
while ((nRead = instreams.read(b)) != -1) {
fos.write(b, 0, nRead);
}
fos.flush();
fos.close();
} catch (Exception e) {
stateInt = 0;
e.printStackTrace();
} finally {
try {
instreams.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return stateInt;
}
/**
* 删除临时二维码
*
* @Description (TODO这里用一句话描述这个方法的作用)
* @param address
* @return
*/
private static String deleteUploadFile(String address) {
File file = new File(address);
if (file.isFile() && file.exists()) {
file.delete();
return "success";
} else {
return "false";
}
}
}
java 生成微信的二维码 工具类的更多相关文章
- Java使用Zxing生成、解析二维码工具类
Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...
- 二维码工具类 - QrcodeUtils.java
二维码工具类,提供多种生成二维码.解析二维码的方法,包括中间logo的二维码等方法. 源码如下:(点击下载 - QrcodeUtils.java.MatrixToImageWriterEx.java. ...
- java二维码工具类,中间带LOGO的,很强大
jar包下载maven 配置: Xml代码 收藏代码 <dependency> <groupId>com.google.zxing</groupId> <ar ...
- Java生成与解析二维码
1.下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar, 其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免 ...
- iOS开发——生成二维码——工具类
啥也不说,直接上源码,拷过去就能用.生成二维码的工具类使用方法在ProduceQRCode.h里有示例说明 分别将下面的ProduceQRCode.h和ProduceQRCode.m对应的代码考到自己 ...
- Java生成、解析二维码
今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...
- java生成和解析二维码
前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是 ...
- 使用Google提供的ZXing Core,Java生成、解析二维码
1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core ...
- java生成二维码工具类
package com.runtime.extend.utils.CodeCreate; import com.google.zxing.*;import com.google.zxing.commo ...
随机推荐
- element ui 手动关闭$notify弹框
1.需求: 当用户点击 “点击下载” 后,文件导出这个弹框主动消失. 2.解决方案: 如下图所示 (需要注意的是这里的关闭是 点击弹框任意处就会关闭,如果想实现我的需求需要判断一下即可)
- oracle 表空间不足处理
linux环境将*.dmp文件导入数据库时,df -h 发现测试环境虚拟机空间不足,而数据文件xxx.dbf所占空间达到40G左右,果断删除表空间重建在导入. 一.查出存储数据表空间名称 selec ...
- 模拟ios应用加载页面
1:设置应用程序系统主界面加载接口为空:Main interface=null; 2: 在AppDelegate实现didFinishLaunchingWithOptions方法 - (BOOL)ap ...
- Galera Cluster——一种新型的高一致性MySQL集群架构
原文链接:https://www.sohu.com/a/147032902_505779,最近被分配定位mysql的问题,学习下. 1. 何谓Galera Cluster 何谓Galera Clust ...
- JS查看对象属性的方式
var person = { type: 'person', say: function(){ console.log("Hellow World!") } } //以person ...
- MongoDB的安装和使用
Step1:下载和安装 下载地址:http://dl.mongodb.org/dl/win32/x86_64 安装:一直按照默认指示去安装或者选择自己喜欢的路径安装. Step2:配置环境变量 安装完 ...
- 浅谈ES6新增数据类型:Symbol
面试中喜闻乐见的问题就是问我们的ES6新增了哪些个新特性 这篇文章一起学习一下新增的数据类型:Symbol JS的原始数据类型:6种Boolean,String,Undefined,NULL,Numb ...
- 2018—自学Selenium+Python 笔记(一)
在开始学习前,先唠几句: 身为一个开发人员,为何想要转测试..很多人不解. 但我觉得这并没有什么不可,测试人员是质量的把控者: 要出一个让客户满意的产品,单纯靠开发自测,是不够的..相信其中缘由大家都 ...
- python基础1-转自金角大王
Python之路,Day1 - Python基础1---转自金角大王 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 ...
- Android Studio 入口程序的设置方法
在src -> main中 ,打开 AndroidManifest.xml 这个文件 下面这里有两个窗口,如果要想把哪个窗口设置成入口窗体,只要把下面红色的放在这个节点中就可以了 <act ...