AccessToken的获取
步骤1:访问微信开发文档的https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET,获取json数据
步骤2:使用JSONObject依赖包将获取到的json数据对象化
步骤3:设置token的过期时间
步骤4:存储可用的token
具体代码示例:
/**
* 向指定的地址发送get请求
* @param url
* @return
*/
public static String get(String url){
try {
//获取URL对象
URL urlObj = new URL(url);
//获取连接
URLConnection connection = urlObj.openConnection();
//获取内容
InputStream is = connection.getInputStream();
byte[] b = new byte[1024];
int len;
StringBuilder sb = new StringBuilder();
while ((len=is.read(b))!=-1){
//System.out.println(sb);
sb.append(new String(b,0,len));
}
//System.out.println(sb);
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
private static final String GET_TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
private static final String APPID="自己的APPID";
private static final String APPSECRET="自己的APPSECRET";
//存储token
private static AccessToken at;
/**
* 存储token
*/
private static void getToken(){
String url = GET_TOKEN_URL.replace("APPID",APPID).replace("APPSECRET",APPSECRET);
//获取到token为json
String tokenStr = GetTokenUtil.get(url);
//创建json对象
JSONObject jsonObject = JSONObject.fromObject(tokenStr);
//使用json对象获取值
String token = jsonObject.getString("access_token");
String expireIn = jsonObject.getString("expires_in");
//创建token对象,并存储
at = new AccessToken(token,expireIn);
}
/**
* 获取Token的方法
* @return
*/
public static String getAccessToken(){
if (at==null||at.isExpired()){
getToken();
}
return at.getAccessToken();
}
/**
* AccToken对象
*/
public class AccessToken {
private String accessToken;
private long expireTime;
/*set AND get*/
public AccessToken(String accessToken, String expireIn) {
this.accessToken = accessToken;
//设置过期时间
expireTime = System.currentTimeMillis()+Integer.parseInt(expireIn)*1000;
}
/**
* 判断是否过期
* @return
*/
public boolean isExpired(){
return System.currentTimeMillis()>expireTime;
}
}