本篇文章主要介绍了"微信公众号入门笔记(四)获取access_token",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
作者:zhutulang 以下是微信公众平台开发者文档中截取的内容: access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_t...
package com.dongliushui.quartz;
importjava.io.UnsupportedEncodingException;
import org.apache.log4j.Logger;
importorg.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
importorg.springframework.stereotype.Component;
import com.dongliushui.util.HttpUtil;
/**
*@ClassName: AccessTokenTaker
*@Description: 获取access_token
*@author zhutulang
*@date 2016年1月10日
*@version V1.0
*/
@Component
public class AccessTokenTaker {
@Value("#{weixinProperties['AppId']}")
private String appId;
@Value("#{weixinProperties['AppSecret']}")
private String appSecret;
@Value("#{weixinProperties['get_access_token_url']}")
private String getAccessTokenUrl;
/**
* access_token
*/
privatestatic String ACCESS_TOKEN = null;
/**
* 上次更新access_token时间
*/
privatestatic LongLAST_ACCESS_TOKEN_UPDATE_TIME = null;
privatestatic Logger log = Logger.getLogger(AccessTokenTaker.class);
/**
* Title: get</p>
*
Description: 每隔一个小时去获取一次access_token</p>
* @author zhutulang
* @version 1.0
*/
@Scheduled(fixedRate=3600000)
privatevoid getTask(){
get();
}
/**
*
Title: getFromCache</p>
*
Description: 从缓存中获取access_token</p>
* @return
* @author zhutulang
* @version 1.0
*/
public String getFromCache(){
returnACCESS_TOKEN;
}
/**
*
Title: getNew</p>
*
Description: 强制更新、获取access_token</p>
*
如果发现现在的时间戳和上次更新的时间戳间隔小于5分钟,那么不更新
* @return
* @author zhutulang
* @version 1.0
*/
publicsynchronized String getNew(){
longtimeNow = System.currentTimeMillis();
if(LAST_ACCESS_TOKEN_UPDATE_TIME== null){
get();
}elseif(timeNow - LAST_ACCESS_TOKEN_UPDATE_TIME < 300000){
//如果是5分钟以内
returnACCESS_TOKEN;
}else{
get();
}
returnACCESS_TOKEN;
}
/**
* Title: get</p>
*
Description: 调用获取access_token接口</p>
* @author zhutulang
* @version 1.0
*/
synchronized void get(){
Stringurl = getAccessTokenUrl.replace("APPID",appId).replace("APPSECRET", appSecret);
StringcontentType = "application/json";
byte[]bytes = HttpUtil.doHttpsGet(url, contentType);
try{
StringaccessToken = new String(bytes, "UTF-8");
longtimeNow = System.currentTimeMillis();
ACCESS_TOKEN= accessToken;
LAST_ACCESS_TOKEN_UPDATE_TIME= timeNow;
log.info("执行获取access_token任务,access_token="+ACCESS_TOKEN);
log.info("时间戳="+LAST_ACCESS_TOKEN_UPDATE_TIME);
}catch (UnsupportedEncodingException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
publicString getAppId() {
returnappId;
}
publicvoid setAppId(String appId) {
this.appId= appId;
}
publicString getAppSecret() {
returnappSecret;
}
publicvoid setAppSecret(String appSecret) {
this.appSecret= appSecret;
}
publicString getGetAccessTokenUrl() {
returngetAccessTokenUrl;
}
publicvoid setGetAccessTokenUrl(String getAccessTokenUrl) {
this.getAccessTokenUrl= getAccessTokenUrl;
}
}
其它相关代码可查看: