access_token存入本地
怎么把access_token本地存写
怎么把access_token本地存写
2016-06-15
我找到了一个方法,亲测有效的:
写一个server 然后启动一个线程,线程里面定义一个全局静态变量,线程定时运行获取access_token,然后放到内存中,取的时候通过这个静态变量取就可以了。
jar包自己找吧
servlet---------- public class InitServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static Logger log = LoggerFactory.getLogger(WeixinUtil.class); public void init() throws ServletException { // 获取web.xml中配置的参数 ,并初始化TokenThread.java中静态变量appid和appsecret TokenThread.appid = getInitParameter("appid"); TokenThread.appsecret = getInitParameter("appsecret"); // web.xml未配置appid、appsecret时给出提示 if ("".equals(TokenThread.appid) || "".equals(TokenThread.appsecret)) { log.error("请在web.xml的InitServlet中设置appid、appsecret参数"); } else { // 启动定时获取access_token的线程 new Thread(new TokenThread()).start(); } } } 注意在web.xml配置参数appid ,appsecret
线程=----------- public class TokenThread implements Runnable { private static Logger log = LoggerFactory.getLogger(TokenThread.class); // 第三方用户唯一凭证,从InitServlet中赋值 public static String appid = ""; // 第三方用户唯一凭证密钥,从InitServlet中赋值 public static String appsecret = ""; public static AccessToken accessToken = null; public void run(){ /** *定期获取token */ while (true) { try { //调用公众平台接口获取access_token; accessToken = WeixinUtil.getAccessToken(appid,appsecret); if (null != accessToken) { log.info("获取access_token成功,有效时长{}秒 token:{}", accessToken.getExpiresIn(), accessToken.getToken()); // 休眠7000秒 Thread.sleep((accessToken.getExpiresIn() - 200) * 1000); } else { // 如果access_token为null,60秒后再获取 Thread.sleep(60 * 1000); } } catch (InterruptedException e) { try { Thread.sleep(10 * 1000); } catch (InterruptedException e1) { System.out.println(); } System.out.println(); } } } } 其他类中取值:String token = TokenThread.accessToken.getToken();
举报