您的位置:首页 > 移动开发 > 微信开发

微信联名登陆 - 定时刷新服务号、订阅号access_token有效时间

2015-07-07 11:53 801 查看
/**

* 刷新服务号的token

*/

private void refreshServerToken(){

String url_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ConstantUtil.JS_APP_ID+"&secret="+ConstantUtil.JS_APP_SECRET;

try {

//发送请求,并获取返回参数

JSONObject jsonToken = new JSONObject(CoreUtils.httpRequest(url_token, "GET", "","normal"));

//获取微信返回的token

String access_token = jsonToken.getString("access_token");

/**

* 正确返回,则去更新redis服务器缓存的token,否则再次去请求微信服务器获取token

*/

if(StringUtils.isNotBlank(access_token)){

redisCacheManger.set("access_token", access_token);

}else{

/**

* 暂时先搁置,重复去请求微信获取token,直到获取正确返回

*/

}

String url_ticket = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token+"&type=jsapi";

JSONObject jsonTicket = new JSONObject(CoreUtils.httpRequest(url_ticket, "GET", "","normal"));

String jsapi_ticket = jsonTicket.getString("ticket");

if(StringUtils.isNotBlank(jsapi_ticket)){

redisCacheManger.set("jsapi_ticket", jsapi_ticket);

}else{

/**

* 重复去获取jsapi_ticket,直到正确返回

*/

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 刷新订阅号的token

*/

private void refreshSubscribeToken(){

String url_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ConstantUtil.SUBSCRIBE_APP_ID+"&secret="+ConstantUtil.SUBSCRIBE_APP_SECRET;

try {

//发送请求,并获取返回参数

JSONObject jsonToken = new JSONObject(CoreUtils.httpRequest(url_token, "GET", "","normal"));

//获取微信返回的token

String subscribe_access_token = jsonToken.getString("access_token");

/**

* 正确返回,则去更新redis服务器缓存的token,否则再次去请求微信服务器获取token

*/

if(StringUtils.isNotBlank(subscribe_access_token)){

redisCacheManger.set("subscribe_access_token", subscribe_access_token);

}else{

/**

* 暂时先搁置,重复去请求微信获取token,直到获取正确返回

*/

}

String subscribe_url_ticket = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+subscribe_access_token+"&type=jsapi";

JSONObject jsonTicket = new JSONObject(CoreUtils.httpRequest(subscribe_url_ticket, "GET", "","normal"));

String subscribe_jsapi_ticket = jsonTicket.getString("ticket");

if(StringUtils.isNotBlank(subscribe_jsapi_ticket)){

redisCacheManger.set("subscribe_jsapi_ticket", subscribe_jsapi_ticket);

}else{

/**

* 重复去获取jsapi_ticket,直到正确返回

*/

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static String httpRequest(String url, String method, String param, String dataType) throws JSONException{

// Map<String, String> result = new HashMap<String, String>();

PrintWriter out = null;

BufferedReader in = null;

String lineOut = "";

try {

URL realUrl = new URL(url);

// 打开和URL之间的连接

HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();

// 设置通用的请求属性

conn.setRequestProperty("accept", "*/*");

conn.setRequestProperty("connection", "Keep-Alive");

conn.setRequestProperty("user-agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");

// if(dataType.equals("xml")){

// conn.setRequestProperty("Content-type", "text/xml");

// }

conn.setRequestProperty("Accept", "application/json");

conn.setRequestProperty("Content-type", "application/json");

// conn.setRequestProperty("Accept-Charset", "UTF-8");

// conn.setRequestProperty("contentType", "UTF-8");

if(method.toUpperCase().equals("POST")){

conn.setUseCaches(false); // Post 请求不能使用缓存

}

// 发送POST请求必须设置如下两行

conn.setRequestMethod(method.toUpperCase());

conn.setDoOutput(true);

conn.setDoInput(true);

// 获取URLConnection对象对应的输出流

out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(),"utf-8"));

// 发送请求参数

out.write(param);



// flush输出流的缓冲

out.flush();

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream(),"UTF-8"));

String line;

while ((line = in.readLine()) != null) {

lineOut += line;

}

} catch (Exception e) {

log.error(e.toString());

}

//使用finally块来关闭输出流、输入流

finally{

try{

if(out!=null){

out.close();

}

if(in!=null){

in.close();

}

}catch(IOException ex){

log.error(ex.toString());

}

}

return lineOut;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: