发表于: 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自启动


返回列表 返回列表
评论

    分享到