package engineerjsp.accesstoken.util;
/**
* IniAccessToeknUtil
* @author Engineer-Jsp
* @date 2014.12.11
* */
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
public class IniAccessToeknUtil {
/**
* 获取access_token的接口地址(GET) 如果是企业号类型,替换参数和地址即可
* */
public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
/**
* 获取access_token
* @param appid 凭证
* @param appsecret 密钥
* @return
*/
public static InitAccessTokenBean getAccessToken(String appid, String appsecret) {
InitAccessTokenBean accessToken = null;
String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
JSONObject jsonObject = HttpRequest(requestUrl, "GET", null);
// 如果请求成功
if (null != jsonObject) {
try {
accessToken = new InitAccessTokenBean();
accessToken.setToken(jsonObject.getString("access_token"));
accessToken.setExpiresIn(jsonObject.getInt("expires_in"));
} catch (JSONException e) {
accessToken = null;
System.out.println("Exception:"+e);
// 获取 accesstoken 失败
String result = String.format("获取token失败 errcode:%s errmsg:%s",jsonObject.getInt("errcode"),jsonObject.getString("errmsg") );
System.out.println(result);
}
}
return accessToken;
}
/**
* 发起https请求并获取结果
* @param requestUrl 请求地址
* @param requestMethod 请求方式(GET、POST)
* @param outputStr 提交的数据
* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
*/
public static JSONObject HttpRequest(String requestUrl, String requestMethod, String outputStr) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
TrustManager[] tm = { new InitAccessTokenX509() };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();
URL url = new URL(requestUrl);
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection();
httpUrlConn.setSSLSocketFactory(ssf);
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
System.out.println("Connection Timed Out......");
} catch (Exception e) {
String result = String.format("Https Request Error:%s", e);
System.out.println(result);
}
return jsonObject;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
微信服务号/企业号防止AccessToken过期的操作
共22个文件
jar:6个
java:5个
class:5个
5星 · 超过95%的资源 需积分: 34 632 下载量 79 浏览量
2014-12-11
20:55:12
上传
评论 7
收藏 1.1MB RAR 举报
温馨提示
微信服务号/企业号防止AccessToken过期的操作
资源推荐
资源详情
资源评论
收起资源包目录
EngineerJsp_AeeessToken.rar (22个子文件)
EngineerJsp_AeeessToken
src
engineerjsp
accesstoken
util
InitAccessTokenX509.java 683B
InitAccessToeknThread.java 1KB
InitAccessTokenBean.java 563B
InitAccessTokenServlet.java 1KB
IniAccessToeknUtil.java 5KB
.project 1KB
WebRoot
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 976B
classes
engineerjsp
accesstoken
util
IniAccessToeknUtil.class 5KB
InitAccessTokenX509.class 914B
InitAccessTokenServlet.class 2KB
InitAccessToeknThread.class 2KB
InitAccessTokenBean.class 807B
lib
ezmorph-1.0.6.jar 84KB
commons-logging-1.0.4.jar 37KB
commons-collections-3.2.1.jar 562KB
commons-beanutils.jar 184KB
json-lib-2.2.3-jdk13.jar 145KB
commons-lang-2.3.jar 240KB
index.jsp 931B
.mymetadata 342B
.classpath 878B
.myeclipse
共 22 条
- 1
Engineer-Jsp
- 粉丝: 651
- 资源: 24
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页