小程序必须已发布
package com.vispractice.focus.union.util;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class GetTwoCode {
public static String getToken(String appid,String secret) {
StringBuilder token = new StringBuilder("");
JSONObject jsonObject = null;
BufferedReader bis = null;
PrintWriter printWriter = null;
try {
URL url = new URL("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");// 提交模式
// conn.setConnectTimeout(10000);//连接超时 单位毫秒
// conn.setReadTimeout(2000);//读取超时 单位毫秒
// 发送POST请求必须设置如下两行
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
// 获取URLConnection对象对应的输出流
printWriter = new PrintWriter(httpURLConnection.getOutputStream());
// 发送请求参数
JSONObject paramJson = new JSONObject();
/* paramJson.put("scene", "a=1234567890");
paramJson.put("page", "pages/index/index");
paramJson.put("width", 430);
paramJson.put("auto_color", true);*/
/**
* line_color生效
* paramJson.put("auto_color", false);
* JSONObject lineColor = new JSONObject();
* lineColor.put("r", 0);
* lineColor.put("g", 0);
* lineColor.put("b", 0);
* paramJson.put("line_color", lineColor);
* */
printWriter.write(paramJson.toString());
// flush输出流的缓冲
printWriter.flush();
//开始获取数据
bis = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
// OutputStream os = new FileOutputStream(new File(path));
String len;
while ((len = bis.readLine()) != null) {
System.out.println(len);
token.append(len);
}
jsonObject = JSON.parseObject(token.toString());
} catch (Exception e) {
log.error(e.getMessage());
}finally {
try {
bis.close();
printWriter.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
return jsonObject.get("access_token").toString();
}
/**
* 生成小程序码
* @param accessToken
* @param path 生成小程序码png路径
*/
public static void getCode(String accessToken,String scene,String path) {
BufferedInputStream bis = null;
PrintWriter printWriter = null;
OutputStream os = null;
try {
URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");// 提交模式
// conn.setConnectTimeout(10000);//连接超时 单位毫秒
// conn.setReadTimeout(2000);//读取超时 单位毫秒
// 发送POST请求必须设置如下两行
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);
// 获取URLConnection对象对应的输出流
printWriter = new PrintWriter(httpURLConnection.getOutputStream());
// 发送请求参数
JSONObject paramJson = new JSONObject();
paramJson.put("scene", scene);
paramJson.put("page", "pages/index/index");
paramJson.put("width", 430);
paramJson.put("auto_color", true);
/**
* line_color生效
* paramJson.put("auto_color", false);
* JSONObject lineColor = new JSONObject();
* lineColor.put("r", 0);
* lineColor.put("g", 0);
* lineColor.put("b", 0);
* paramJson.put("line_color", lineColor);
* */
printWriter.write(paramJson.toString());
// flush输出流的缓冲
printWriter.flush();
//开始获取数据
bis = new BufferedInputStream(httpURLConnection.getInputStream());
os = new FileOutputStream(new File(path));
int len;
byte[] arr = new byte[1024];
while ((len = bis.read(arr)) != -1) {
os.write(arr, 0, len);
os.flush();
}
} catch (Exception e) {
log.error(e.getMessage());
}finally {
try {
os.close();
bis.close();
printWriter.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
}
public static void main(String[] args) {
getCode(getToken("appid", "sercet"),"scene", "filepath");
}
}