1.需求:要调用第三方接口的放回数据,入参为json格式,其中最重要的每个接口都需要t第三方传过来token,但是token 的过期时间是十分钟。为了防止一直请求,把token存到缓存(1)存到session (2)存到redis 。根据项目需要,这里采用的是存session。
如果有调用的,去判断session有没有值,并且是否已经过了9分钟,如果是重新获取。
public static String getToken(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = ();
DataShareDto dataShareToken = (DataShareDto) ("dataShareDto");
if (dataShareToken != null) {
Calendar c = ();
long now = ();
(());
long lastly = ();
if ((now - lastly) < 540000) {
return ();
} else {
return commonToken(request, response);
}
} else {
return commonToken(request, response);
}
}
public static String commonToken(HttpServletRequest request, HttpServletResponse response) {
try {
JSONObject jsonObject = new JSONObject();
("username", USERNAME);
("password", PASSWORD);
String encoding = "utf-8";
String body = "";
CloseableHttpClient client = ();
HttpPost httpPost = new HttpPost(URL);
StringEntity s = new StringEntity((), "utf-8");
(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
(s);
("Content-type", "application/json");
("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
CloseableHttpResponse res = (httpPost);
HttpEntity entity = ();
if (entity != null) {
body = (entity, encoding);
}
(entity);
();
JSONObject strs = (body);
//((body))
//这一步的原因是,返回的json字符创是Unicode编码格式,需要通过解析成中文格式并h返回
String code = ("code");
if ("01".equals(code)) {
String data = ("data");
//把token存到session里面
if ((data)) {
HttpSession session = ();
DataShareDto dataShareDto = new DataShareDto();
(data);
(new Date());
("dataShareDto", dataShareDto);
return data;
}
}
} catch (Exception e) {
();
}
return "00";
}