1. public Object userLogin(HttpServletRequest request, HttpServletResponse response, String email, String password,
  2. String captcha) {
  3.     
         //获取sessionId
  4. String jsessionIdSt = getCookieStringByKey(request, "JSESSIONID");
  5.  
  6. if (StringUtils.isEmpty(jsessionIdSt)) {
  7. return ResultVOUtil.retFailed("登录缓存信息为空");
  8. }
  9.  
  10. if (StringUtils.isNotBlank(jsessionIdSt)) {
  11.  
  12. if (StringUtils.isEmpty(email) || StringUtils.isEmpty(password) || StringUtils.isEmpty(captcha)) {
  13. ResultVOUtil.retFailed("用户名/用户密码/验证码不能为空");
  14. }
  15.  
  16. // 创建默认的httpClient实例.
  17. CloseableHttpClient httpclient = HttpClients.createDefault();
  18. // 创建请求方法实例
  19. HttpPost httpPost = new HttpPost("http://www.test.com/user/login");
  20. CloseableHttpResponse innerResponse = null;
  21. HttpEntity entity = null;
  22.  
  23. httpPost.addHeader(new BasicHeader("Cookie", "JSESSIONID=" + jsessionIdSt));
  24. // 创建参数队列
  25. List<NameValuePair> formparams = new ArrayList<NameValuePair>();
  26. formparams.add(new BasicNameValuePair("email", email));
  27. formparams.add(new BasicNameValuePair("password", password));
  28.  
  29. UrlEncodedFormEntity uefEntity;
  30. try {
  31. uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
  32. httpPost.setEntity(uefEntity);
  33.          // 发送请求并接收response
  34. innerResponse = httpclient.execute(httpPost);
  35.          //解析response
  36. entity = innerResponse.getEntity();
  37.  
  38. if (entity != null) {
  39.  
  40. // 成功
  41. String ssoResultSt = EntityUtils.toString(entity, CHAR_SET_UTF_8);
  42.  
  43. JSONObject ssoResultJson = JSONObject.parseObject(ssoResultSt);
  44.  
  45. String ssoData = ssoResultJson.getString("data");
  46. Integer ssoCode = ssoResultJson.getInteger("code");
  47. String ssoMsg = ssoResultJson.getString("msg");
  48.  
  49. if (ssoCode == null) {
  50. return ResultVOUtil.retFailed("SSO登录返回状态为空");
  51. }
  52.  
  53. // 登录成功,返回码为预设的值
  54. if (ssoCode.intValue() == 1) {
  55. // response植入cookie
  56. Header[] ssoResponseHeader = innerResponse.getHeaders("Set-Cookie");
  57.  
  58. if (ssoResponseHeader != null && ssoResponseHeader.length != 0) {
  59. for (Header stepHeader : ssoResponseHeader) {
  60. if (stepHeader != null) {
  61. response.addHeader(stepHeader.getName(), stepHeader.getValue());
  62. }
  63. }
  64. }
  65. return ResultVOUtil.retSuccess(ssoData);
  66. }
  67. // 登录失败
  68. else {
  69. return ResultVOUtil.retFailed(ssoMsg);
  70. }
  71.  
  72. } else {
  73. return ResultVOUtil.retFailed("登录端没有响应");
  74. }
  75.  
  76. } catch (ClientProtocolException protocolException) {
  77.  
  78. logger.error(protocolException.getMessage(), protocolException);
  79.  
  80. } catch (UnsupportedEncodingException uException) {
  81.  
  82. logger.error(uException.getMessage(), uException);
  83.  
  84. } catch (IOException ioException) {
  85.  
  86. logger.error(ioException.getMessage(), ioException);
  87.  
  88. } finally {
  89.  
  90. // 关闭连接,释放资源
  91. try {
  92. if (innerResponse != null) {
  93. innerResponse.close();
  94. }
  95. httpclient.close();
  96.  
  97. } catch (IOException e) {
  98. logger.error(e.getMessage());
  99. }
  100. }
  101.  
  102. return ResultVOUtil.retFailed("业务异常,导致登录失败");
  103.  
  104. } else {
  105. return ResultVOUtil.retFailed("缓存信息丢失");
  106. }
  107.  
  108. }

java内部发送http请求并取得返回结果,修改response的cookie的更多相关文章

  1. java httpclient发送json 请求 ,go服务端接收

    /***java客户端发送http请求*/package com.xx.httptest; /** * Created by yq on 16/6/27. */ import java.io.IOEx ...

  2. java中发送http请求的方法

    package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...

  3. 用java代码发送http请求

    //发送post请求 PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL ...

  4. 从客户发送http请求到服务器返回http之间发生了什么

    由于我知识有限,可能会有模糊或者错误的地方,欢迎讨论与指正. 1.浏览器发出http请求 当用户访问一个url时,浏览器便会开始生成一个http请求. 首先获取http请求中所需要的参数,如url,c ...

  5. 对于java用发送http请求,请求内容为xml格式

    import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.ByteArrayOutputStr ...

  6. java okhttp发送post请求

    java的httpclient和okhttp请求网络,构造一个基本的post get请求,都比py的requests步骤多很多,也比py的自带包urllib麻烦些. 先封装成get post工具类,工 ...

  7. java 模拟发送post请求测试

    方法一: HttpClient public void postTest(HttpServletRequest request,Integer type,String phone,String pas ...

  8. JMeter发送get请求并分析返回结果

    在实际工作的过程中,我们通常需要模拟接口,来进行接口测试,我们可以通过JMeter.postman等多种工具来进行接口测试,但是工具的如何使用对于我们来说并不是最重要的部分,最重要的是设计接口测试用例 ...

  9. 一个完整的用java客户端使用httpClient请求网页并返回的方法

    import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import ja ...

随机推荐

  1. selenium相关面试题

    selenium中如何判断元素是否存在? selenium中hidden或者是display = none的元素是否可以定位到? selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元 ...

  2. POJ3250(单调栈)

    Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 17614   Accepted: 5937 Des ...

  3. 转载:MyEclipse安装插件的几种方法

    地址:http://www.cnblogs.com/pharen/archive/2012/02/08/2343342.html 本文讲解MyEclipse(MyEclipse10)的三种方法,以SV ...

  4. 私有云存储搭建(owncloud)

    第一步.搭建LAMP(基于linux7.1.1503) 1 配置yum(网络加本地,下面为网络) [vault.centos.org_7.1.1503_os_x86_64_] name=added f ...

  5. Qt入门之基础篇(1):Qt4及Qt5的下载与安装

    转载请注明出处:CN_Simo. 导语: Qt是一个跨平台的C++图形界面应用程序框架.它提供给开发者建立图形用户界面所需的功能,广泛用于开发GUI程序,也可用于开发非GUI程序.Qt很容易扩展,并且 ...

  6. Wireshark网络抓包(一)——数据包、着色规则和提示

    一.数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息. 帧:物理层.链路层 包:网络层 段:传输层.应用层 1)Frame 物理层数据帧概况 2)Ethernet ...

  7. 三分钟解读springmvc依赖

    长期以来都在写SSM框架的项目,却未能深入理解框架的搭建原理,而只是浅薄的理解前辈的架构,然后不断套用,项目做过几个,但框架的内涵却没有把握.小编打算今天从SpringMVC的依赖分析做起,一步步进行 ...

  8. Mysql数据库连接查询

                                    Mysql数据库连接查询 连接是关系数据库模型的主要特点.连接查询是关系数据库中最主要的查询,主要包括内连接.外连接等.通过连接运算可以 ...

  9. webapi 发布接口报405错误(angularjs2.0)

    参考链接:http://www.cnblogs.com/shenbin/p/5680976.html web访问接口报405错误,以前的jQuery访问方式访问接口没有问题. 但是换成angularj ...

  10. c#类,接口,结构,抽象类介绍 以及抽象和接口的比较

    c#中的类是最常见的实际上就是对某种类型的对象定义变量和方法的原型. 结构是值类型,而类是引用类型. 1.与类不同,结构的实例化可以不使用 new 运算符.结构可以声明构造函数,但它们必须带参数. 2 ...