发表于: 2017-12-27 22:02:46
1 524
今天完成的事情
完成定时刷新access_token的模块
用settings类来保存APPID和APPSECRET以及需要获取的ACCESS_TOKEN
public class Settings {
public static String APPID = "wx76f0f9f958a844e9";
public static String APP_SECRET = "fc856de706af0a54b5e27a5e6ab5334c";
public static String ACCESS_TOKEN = "";
}
配置一个自启动的servlet,在init初始化方法中新开一个线程用来获取access_token,每两小时获取一次:
@WebServlet(
name = "ServerInitServlet",
urlPatterns = {"/ServerInitServlet"},
loadOnStartup = 1
)
public class ServerInitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void init() throws ServletException {
super.init();
refreshAccessToken();
}
/*
* 刷新微信Token
*/
private void refreshAccessToken() {
new Thread(){
@Override
public void run() {
while (true) {
try {
//获取accessToken
Settings.ACCESS_TOKEN = getAccessToken();
if (Settings.ACCESS_TOKEN != null) {
sleep(60 * 60 * 2 * 1000);
}else{
Thread.sleep(1000 * 3); //获取的access_token为空 休眠3秒
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}.start();
}
protected String getAccessToken() throws JSONException {
String requestURL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"+ "&appid=" + Settings.APPID + "&secret=" + Settings.APP_SECRET;
JSONObject json = WeixinUtil.httpRequest(requestURL, "GET", null);
System.out.println("获取到的access_token="+json); //打印获取到的access_token
AccessTokenEnitity accessTokenEnitity = new AccessTokenEnitity();
accessTokenEnitity.setExpiresIn(json.getIntValue("expires_in"));
accessTokenEnitity.setToken(json.getString("access_token"));
return json.getString("access_token");
}
}
经过测试,确实可用
明天的计划
在服务器上测试接口
遇到的问题
无
收获
servlet自启动
评论