您的位置:首页 > 理论基础 > 计算机网络

java内部发送http请求并取得返回结果,修改response的cookie

2015-12-30 18:43 561 查看
public Object userLogin(HttpServletRequest request, HttpServletResponse response, String email, String password,
String captcha) {
    
     //获取sessionId
String jsessionIdSt = getCookieStringByKey(request, "JSESSIONID");

if (StringUtils.isEmpty(jsessionIdSt)) {
return ResultVOUtil.retFailed("登录缓存信息为空");
}

if (StringUtils.isNotBlank(jsessionIdSt)) {

if (StringUtils.isEmpty(email) || StringUtils.isEmpty(password) || StringUtils.isEmpty(captcha)) {
ResultVOUtil.retFailed("用户名/用户密码/验证码不能为空");
}

// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建请求方法实例
HttpPost httpPost = new HttpPost("http://www.test.com/user/login");
CloseableHttpResponse innerResponse = null;
HttpEntity entity = null;

httpPost.addHeader(new BasicHeader("Cookie", "JSESSIONID=" + jsessionIdSt));
// 创建参数队列
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("email", email));
formparams.add(new BasicNameValuePair("password", password));

UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
httpPost.setEntity(uefEntity);
         // 发送请求并接收response
innerResponse = httpclient.execute(httpPost);
         //解析response
entity = innerResponse.getEntity();

if (entity != null) {

// 成功
String ssoResultSt = EntityUtils.toString(entity, CHAR_SET_UTF_8);

JSONObject ssoResultJson = JSONObject.parseObject(ssoResultSt);

String ssoData = ssoResultJson.getString("data");
Integer ssoCode = ssoResultJson.getInteger("code");
String ssoMsg = ssoResultJson.getString("msg");

if (ssoCode == null) {
return ResultVOUtil.retFailed("SSO登录返回状态为空");
}

// 登录成功,返回码为预设的值
if (ssoCode.intValue() == 1) {
// response植入cookie
Header[] ssoResponseHeader = innerResponse.getHeaders("Set-Cookie");

if (ssoResponseHeader != null && ssoResponseHeader.length != 0) {
for (Header stepHeader : ssoResponseHeader) {
if (stepHeader != null) {
response.addHeader(stepHeader.getName(), stepHeader.getValue());
}
}
}
return ResultVOUtil.retSuccess(ssoData);
}
// 登录失败
else {
return ResultVOUtil.retFailed(ssoMsg);
}

} else {
return ResultVOUtil.retFailed("登录端没有响应");
}

} catch (ClientProtocolException protocolException) {

logger.error(protocolException.getMessage(), protocolException);

} catch (UnsupportedEncodingException uException) {

logger.error(uException.getMessage(), uException);

} catch (IOException ioException) {

logger.error(ioException.getMessage(), ioException);

} finally {

// 关闭连接,释放资源
try {
if (innerResponse != null) {
innerResponse.close();
}
httpclient.close();

} catch (IOException e) {
logger.error(e.getMessage());
}
}

return ResultVOUtil.retFailed("业务异常,导致登录失败");

} else {
return ResultVOUtil.retFailed("缓存信息丢失");
}

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