为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

2 回答

您好  这两个方法该写在哪个类中呢

0 回复 有任何疑惑可以回复我~

我找到了一个方法,亲测有效的:

写一个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();


2 回复 有任何疑惑可以回复我~
#1

慕粉3254756 提问者

谢谢!
2016-06-21 回复 有任何疑惑可以回复我~
#2

6的

您好 需要配置web.xml吗
2018-07-20 回复 有任何疑惑可以回复我~
#3

6的

我的第16行getAccessToken(appid,appsecret);报这个错,没找出来:The method getAccessToken() in the type WeixinUtil is not applicable for the arguments (String, String)
2018-07-20 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

access_token存入本地

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信