最近在给小程序做一个管理的后台系统,使用的是小程序自带的云数据库,后台用SSM框架,不想使用本地数据库所以用小程序给的HTTP API来实现。
首先要获取自己微信小程序的ACCESS_TOKEN
小程序管网给的getAccessToken请求地址:
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
其中的APPID是在开发时填写的APPID
在微信小程序后台中开发中的开发设置中
同时APPSECRET也在微信小程序后台中开发中的开发设置中(如果你忘了需要重置)
然后就是在Java中编辑代码
public class Constant {
public static final String APPID = "";
public static final String APPSECRET = "";
/**全局token 所有与微信有交互的前提 */
public static String ACCESS_TOKEN;
/**全局token上次获取事件 */
public static long LASTTOKENTIME;
/**
* 获取全局token方法
* 该方法通过使用HttpClient发送http请求,HttpGet()发送请求String
* 微信返回的json中access_token是我们的全局token
*/
public static synchronized String getAccess_token(){
String strURL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+APPID+"&secret="+APPSECRET ;
OutputStreamWriter out = null;
InputStream is = null;
if(ACCESS_TOKEN == null || System.currentTimeMillis() - LASTTOKENTIME > 7000*1000){
try {
URL url = new URL(strURL);// 创建连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
connection.setInstanceFollowRedirects(true);
connection.setRequestMethod("GET"); // 设置请求方式
connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
connection.setRequestProperty("Content-Type", "application/json"); //设置发送数据的格式
connection.connect();
out = new
OutputStreamWriter(connection.getOutputStream(), "UTF-8"); // utf-8编码
out.flush();
out.close();
// 读取响应
is = connection.getInputStream();
int length = (int) connection.getContentLength();// 获取长度
if (length != -1) {
byte[] data = new byte[length];
byte[] temp = new byte[512];
int readLen = 0;
int destPos = 0;
while ((readLen = is.read(temp)) > 0) {
System.arraycopy(temp, 0, data,destPos, readLen);
destPos += readLen;
}
String result = new String(data,"UTF-8"); // utf-8编码
Map mapTypes = JSON.parseObject(result);
for (Object obj: mapTypes.keySet()){
if(obj.equals("access_token")) {
ACCESS_TOKEN=(String)mapTypes.get(obj);
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return ACCESS_TOKEN;
}
public static void main(String[] args) {
System.out.println(getAccess_token());
}
}
这个需要用到fastjson的jar包
fastjson-1.2.49.jar