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 生成微信的二维码 工具类的更多相关文章

  1. Java使用Zxing生成、解析二维码工具类

    Zxing是Google提供的关于条码(一维码.二维码)的解析工具,提供了二维码的生成与解析的方法. 1.二维码的生成 (1).将Zxing-core.jar 包加入到classpath下. (2). ...

  2. 二维码工具类 - QrcodeUtils.java

    二维码工具类,提供多种生成二维码.解析二维码的方法,包括中间logo的二维码等方法. 源码如下:(点击下载 - QrcodeUtils.java.MatrixToImageWriterEx.java. ...

  3. java二维码工具类,中间带LOGO的,很强大

    jar包下载maven 配置: Xml代码 收藏代码 <dependency> <groupId>com.google.zxing</groupId> <ar ...

  4. Java生成与解析二维码

    1.下载支持二维码的jar包qrcode.jar和qrcode_swetake.jar, 其中qrcode_swetake.jar用于生成二维码,rcode.jar用于解析二维码,jar包下载地址(免 ...

  5. iOS开发——生成二维码——工具类

    啥也不说,直接上源码,拷过去就能用.生成二维码的工具类使用方法在ProduceQRCode.h里有示例说明 分别将下面的ProduceQRCode.h和ProduceQRCode.m对应的代码考到自己 ...

  6. Java生成、解析二维码

    今天遇到需求,使用Java生成二维码图片,网搜之后,大神们早就做过,个人总结一下. 目标:借助Google提供的ZXing Core工具包,使用Java语言实现二维码的生成和解析. 步骤如下: 1.m ...

  7. java生成和解析二维码

    前言 现在,二维码的应用已经非常广泛,在线生成器也是诸多,随手生成. 所以就和大家分享一个小案例,用zxing来做一个的二维码生成器,当然这个例子是比较简单,若是写的不好请多多包涵. ZXING项目是 ...

  8. 使用Google提供的ZXing Core,Java生成、解析二维码

    1.maven项目中,pom.xml中引入ZXing Core工具包: <!-- https://mvnrepository.com/artifact/com.google.zxing/core ...

  9. java生成二维码工具类

    package com.runtime.extend.utils.CodeCreate; import com.google.zxing.*;import com.google.zxing.commo ...

随机推荐

  1. c语言头文件的认识

    c头文件的作用是什么,和.c文件是怎么联系的,该怎么样编写头文件呢?这些问题我一直没搞明白,在阅读uCOS-II(邵贝贝)“全局变量”部分有些疑惑,今天终于搞清楚了头文件的一些基础知识,特地分享一下. ...

  2. centos 6.5 下 nginx 简单优化_虚拟主机_负载均衡

    # 用了nginx for win很久,安装也是超级简单.# 还是用一下linux版的吧.环境是centos 6.5 x64 # 安装开始: # 先安装依赖 yum install gcc-c++ y ...

  3. Python03(Linux和Python简介)

    Trainning-day02回顾1.rmdir : 删除空文件夹2.rm :删除文件或者文件夹 -r 删除目录以及其内容 -i 删除前的提示 -f 强制删除3.通配符 * 匹配任意多个任意字符 ?匹 ...

  4. Javascript学习---倒计时

    function fn() { var now = new Date(); // 此时此刻的时间 var old = new Date(2018, 9, 30); // 2018,6,25 var t ...

  5. Openflow协议详解

    http://www.h3c.com/cn/d_201811/1131080_30005_0.htm# 1 OpenFlow背景 转发和控制分离是SDN网络的本质特点之一 .在SDN网络架构中,控制平 ...

  6. java使用poi导出excel

    继上一篇导出pdf,这篇导出excel. 1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <art ...

  7. OpenSSL生成RSA公私钥(java)

    生成私钥:genrsa -out rsa_private_key.pem 1024 生成公钥:rsa -in rsa_private_key.pem -out rsa_public_key.pem - ...

  8. 转 深入理解net core中的依赖注入、Singleton、Scoped、Transient

    出处:http://www.mamicode.com/info-detail-2200461.html 一.什么是依赖注入(Denpendency Injection) 这也是个老身常谈的问题,到底依 ...

  9. Qt学习3---子窗口与父窗口

    创建子窗口后,主窗口的头文件需要  #include "子窗口头文件" 子窗口和父窗口之间相互切换 子窗口没有办法处理父窗口,子窗口此时就需要一个信号: * 信号必须有signal ...

  10. 常用socket选项

    1.socket选项通常:服务端应在listen 前设置,accpet返回的socket继承自监听套接字. 客户端应在connect之前设置 2.socket 如果有大量短连接应设置SO_LINGER ...