写一个Java获取企业微信accesstoken的方法,使用Redis作为缓冲,缓存时间为1.5小时
时间: 2024-05-09 17:22:05 浏览: 114
好的,以下是获取企业微信accesstoken的Java方法,使用Redis缓存,缓存时间为1.5小时:
```java
import redis.clients.jedis.Jedis;
public class AccessTokenManager {
// 企业微信应用ID
private final static String APP_ID = "your_app_id";
// 企业微信应用的secret
private final static String APP_SECRET = "your_app_secret";
// Redis缓存的key值
private final static String REDIS_KEY = "access_token";
// Redis缓存的缓存时间,单位:秒
private final static int CACHE_TIME = 5400; //即1.5小时
/**
* 获取企业微信accesstoken
*
* @return accesstoken
*/
public static String getAccessToken() {
// 先从缓存中获取
String accessToken = getCacheAccessToken();
if (accessToken == null) {
// 缓存中没有,则重新获取
accessToken = getNewAccessToken();
// 将新的accesstoken缓存到Redis中
setCacheAccessToken(accessToken);
}
return accessToken;
}
/**
* 从缓存中获取accesstoken
*
* @return accesstoken
*/
private static String getCacheAccessToken() {
Jedis jedis = null;
String accessToken = null;
try {
jedis = new Jedis("localhost");
accessToken = jedis.get(REDIS_KEY);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return accessToken;
}
/**
* 将accesstoken缓存到Redis中
*
* @param accessToken accesstoken
*/
private static void setCacheAccessToken(String accessToken) {
Jedis jedis = null;
try {
jedis = new Jedis("localhost");
jedis.setex(REDIS_KEY, CACHE_TIME, accessToken);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
}
/**
* 获取新的accesstoken
*
* @return accesstoken
*/
private static String getNewAccessToken() {
// 发送HTTP请求,获取新的accesstoken
String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + APP_ID + "&corpsecret=" + APP_SECRET;
String accessToken = null;
try {
String response = HttpClientUtils.sendGet(url);
JSONObject jsonObject = JSONObject.parseObject(response);
accessToken = jsonObject.getString("access_token");
} catch (Exception e) {
e.printStackTrace();
}
return accessToken;
}
}
```
以上方法中,`APP_ID`和`APP_SECRET`需要替换为自己企业微信应用的对应值。其中获取新的accesstoken的方法使用了`HttpClientUtils.sendGet(url)`这个HTTP请求的工具类,工具类可以自行百度实现。
另外,以上方法中的`Jedis`是Redis的Java客户端,需要通过`maven`引入。
阅读全文