获取微信access_token每天超过规定次数解决方案
protected synchronized AccessToken getAccessToken() {
AccessToken accessToken = (AccessToken)tokenMap.get(this.appid);
Long now = (new Date()).getTime();
if (accessToken == null || now > accessToken.getExpiresTimestemp()) {
accessToken = WechatUtils.getAccessToken(this.appid, this.secret);
tokenMap.put(this.appid, accessToken);
logger.info("new accessToken");
}
return accessToken;
}
public static AccessToken getAccessToken(String appid, String secret) {
if (appid != null && secret != null) {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource cosmsservice = client.resource("/cgi-bin/token");
ClientResponse clientResponse = (ClientResponse)cosmsservice.queryParam("grant_type", "client_credential").queryParam("appid", appid).queryParam("secret", secret).get(ClientResponse.class);
if (clientResponse.getStatus() != 200) {
throw new IllegalStateException("status error:" + clientResponse.getStatus());
} else {
Map result = (Map)(new Gson()).fromJson((String)clientResponse.getEntity(String.class), Map.class);
if (result.get("errcode") != null) {
throw new WechatAccessException(result.get("errcode") + "", result.get("errmsg") + "");
} else {
long now = (new Date()).getTime();
return new AccessToken((String)result.get("access_token"), ((Double)result.get("expires_in")).longValue() * 1000L + now);
}
}
} else {
throw new IllegalArgumentException("appid or secret was null.");
}
}