session 在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一 个不变就可以用到web的session了,做法是第一次数据请求时就获取sessionid的值并保存在一个静态变量中,然后在第二次请求数据的时候要 将这个sessionid一并放在Cookie中发给服务器,服务器则是通过这个sessionid来识别究竟是那个客户端在请求数据的,在php中这个 sessionid的名字叫做PHPSESSID。 在java 下sessionid 的名字叫做JSESSIONID

[java] view plaincopy
  1. package com.rainet.tiis.network;
  2. import java.util.Iterator;
  3. import java.util.List;
  4. import java.util.Map;
  5. import org.apache.http.HttpResponse;
  6. import org.apache.http.NameValuePair;
  7. import org.apache.http.client.CookieStore;
  8. import org.apache.http.client.HttpClient;
  9. import org.apache.http.client.entity.UrlEncodedFormEntity;
  10. import org.apache.http.client.methods.HttpGet;
  11. import org.apache.http.client.methods.HttpPost;
  12. import org.apache.http.client.params.HttpClientParams;
  13. import org.apache.http.cookie.Cookie;
  14. import org.apache.http.impl.client.DefaultHttpClient;
  15. import org.apache.http.params.BasicHttpParams;
  16. import org.apache.http.params.HttpConnectionParams;
  17. import org.apache.http.params.HttpParams;
  18. import org.apache.http.params.HttpProtocolParams;
  19. import org.apache.http.protocol.HTTP;
  20. import org.apache.http.util.EntityUtils;
  21. import android.util.Log;
  22. /**
  23. * @project:                    TIIS
  24. * @Title:                      SimpleClient.java
  25. * @Package                     com.rainet.tiis.network
  26. * @Description:                HTTP请求factory
  27. * @author                      杨贵松
  28. * @date                        2014-3-18 下午12:39:23
  29. * @version                     V1.0
  30. */
  31. public class SimpleClient {
  32. private static HttpParams httpParams;
  33. private static DefaultHttpClient httpClient;
  34. private static String JSESSIONID; //定义一个静态的字段,保存sessionID
  35. /**
  36. * @Title:              getHttpClient
  37. * @author              杨贵松
  38. * @date                2014-3-18 下午1:11:18
  39. * @Description:        获取HttpClient
  40. * @return
  41. * @throws Exception
  42. * HttpClient               返回
  43. */
  44. public static HttpClient getHttpClient() throws Exception {
  45. // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的)
  46. httpParams = new BasicHttpParams();
  47. // 设置连接超时和 Socket 超时,以及 Socket 缓存大小
  48. HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);
  49. HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);
  50. HttpConnectionParams.setSocketBufferSize(httpParams, 8192);
  51. // 设置重定向,缺省为 true
  52. HttpClientParams.setRedirecting(httpParams, true);
  53. // 设置 user agent
  54. String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6";
  55. HttpProtocolParams.setUserAgent(httpParams, userAgent);
  56. // 创建一个 HttpClient 实例
  57. // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient
  58. // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient
  59. httpClient = new DefaultHttpClient(httpParams);
  60. return httpClient;
  61. }
  62. /**
  63. * @Title:              doGet
  64. * @author              杨贵松
  65. * @date                2014-3-18 下午12:39:58
  66. * @Description:        doGet请求
  67. * @param url
  68. * @param params
  69. * @return
  70. * @throws Exception
  71. * String               返回
  72. */
  73. @SuppressWarnings("rawtypes")
  74. public static String doGet(String url, Map params) throws Exception {
  75. /* 建立HTTPGet对象 */
  76. String paramStr = "";
  77. if (params != null) {
  78. Iterator iter = params.entrySet().iterator();
  79. while (iter.hasNext()) {
  80. Map.Entry entry = (Map.Entry) iter.next();
  81. Object key = entry.getKey();
  82. Object val = entry.getValue();
  83. paramStr += paramStr = "&" + key + "=" + val;
  84. }
  85. }
  86. if (!paramStr.equals("")) {
  87. paramStr = paramStr.replaceFirst("&", "?");
  88. url += paramStr;
  89. }
  90. HttpGet httpRequest = new HttpGet(url);
  91. String strResult = "doGetError";
  92. /* 发送请求并等待响应 */
  93. HttpResponse httpResponse = httpClient.execute(httpRequest);
  94. /* 若状态码为200 ok */
  95. if (httpResponse.getStatusLine().getStatusCode() == 200) {
  96. /* 读返回数据 */
  97. strResult = EntityUtils.toString(httpResponse.getEntity());
  98. } else {
  99. strResult = "Error Response: " + httpResponse.getStatusLine().toString();
  100. }
  101. Log.v("strResult", strResult);
  102. return strResult;
  103. }
  104. /**
  105. * @Title:              doPost
  106. * @author              杨贵松
  107. * @date                2014-3-18 下午12:39:38
  108. * @Description:        doPost请求
  109. * @param url
  110. * @param params
  111. * @return
  112. * @throws Exception
  113. * String               返回
  114. */
  115. public static String doPost(String url, List<NameValuePair> params) throws Exception {
  116. /* 建立HTTPPost对象 */
  117. HttpPost httpRequest = new HttpPost(url);
  118. String strResult = "doPostError";
  119. /* 添加请求参数到请求对象 */
  120. if (params != null && params.size() > 0) {
  121. httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
  122. }
  123. if(null != JSESSIONID){
  124. httpRequest.setHeader("Cookie", "JSESSIONID="+JSESSIONID);
  125. }
  126. /* 发送请求并等待响应 */
  127. HttpResponse httpResponse = httpClient.execute(httpRequest);
  128. /* 若状态码为200 ok */
  129. if (httpResponse.getStatusLine().getStatusCode() == 200) {
  130. /* 读返回数据 */
  131. strResult = EntityUtils.toString(httpResponse.getEntity());
  132. /* 获取cookieStore */
  133. CookieStore cookieStore = httpClient.getCookieStore();
  134. List<Cookie> cookies = cookieStore.getCookies();
  135. for(int i=0;i<cookies.size();i++){
  136. //这里是读取Cookie['JSSESSID']的值存在静态变量中,保证每次都是同一个值
  137. if("JSESSIONID".equals(cookies.get(i).getName())){
  138. JSESSIONID = cookies.get(i).getValue();
  139. break;
  140. }
  141. }
  142. }
  143. Log.v("strResult", strResult);
  144. return strResult;
  145. }
  146. }

(4.1.28.2)HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类相关推荐

  1. HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类

    摘要: session在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的sessi ...

  2. 轻松把玩HttpClient之封装HttpClient工具类(五),携带Cookie的请求

    近期更新了一下HttpClientUtil工具类代码,主要是加入了一个參数HttpContext,这个是用来干嘛的呢?事实上是用来保存和传递Cookie所须要的. 由于我们有非常多时候都须要登录.然后 ...

  3. cookie helper.php,CookieHelper cook crud 工具类

    package com.sd.sdactivity.utils; import javax.servlet.http.Cookie; import javax.servlet.http.HttpSer ...

  4. Java后端Cookie工具类(设置Cookie有效时间、得到Cookie的域名等方法)

    在这里总结一些后端处理Cookie的工具类方法,供参考 调用就可以这样 // 设置cookie CookieUtils.setCookie(request, response, "user& ...

  5. httpPost.setHeader,httpPost.addHeader 区别

    httpPost.setHeader()和httpPost.addHeader()都是Apache HttpClient中的方法,用于设置HTTP请求头. httpPost.setHeader()方法 ...

  6. JAVA——保持cookie登录状态的HttpClient封装工具类

    在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...

  7. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  8. cookie工具类 java_springboot封装JsonUtil,CookieUtil工具类代码实例

    这篇文章主要介绍了springboot封装JsonUtil,CookieUtil工具类过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Jso ...

  9. ThinkPHP3验证码、文件上传、缩略图、分页(自定义工具类、session和cookie)

    验证码 TP框架中自带了验证码类 位置:Think/verify.class.php 在LoginController控制器中创建生存验证码的方法 login.html登陆模板中 在LoginCont ...

最新文章

  1. CodedStereo:大尺度景深双目视觉的相位掩模学习(CVPR2021)
  2. 结构风险和经验风险是什么?怎么去平衡它们?
  3. KNN 最近邻算法(K近邻)
  4. 莎拉波顿,莎曼莎考克斯——英伦设计VS美国设计
  5. mysql -- 预处理语句
  6. arcgis下的python编程-基于ArcGIS的Python编程秘笈(第2版)
  7. nrf51822-添加DFU服务
  8. 用什么来代替switch_一根转动的圆筒能有什么用?可以用它来代替机翼、船帆
  9. 需要按次序点击链接的网页特效
  10. Vue项目实战07:引入Normalize.css样式初始化
  11. [剑指offer]面试题35:第一个只出现一次的字符
  12. java实现rsa欧几里得算法求d_RSA算法中利用欧几里得算法求d详细过程
  13. 一个寄存器有几个字节_STM32f103ZET6 学习资料 (连载2 寄存器的操作界限)
  14. 转载:jQuery 1.3.3 新功能
  15. 第15届Pwn2Own大赛确定目标和奖金
  16. paip.httpd.conf 是空的.txt
  17. 一个不明觉厉的貌似包含很多linux资料索引的网页
  18. 推荐一款优秀的注册表和临时文件等清理软件-CCleaner
  19. 江苏省苏州市谷歌高清卫星地图下载
  20. 如何解决没有指定在Windows运行或者它包含错误

热门文章

  1. “国产CT一哥”再冲IPO:净利近乎腰斩,能否成为下一个迈瑞?
  2. openjudge 1.13.11 回文素数
  3. SSM酒店管理系统项目Day2
  4. python海龟绘图画五角星_海龟绘图代码_python乌龟画图五角星
  5. php 搭建discuz论坛,搭建Discuz论坛
  6. 【Python数据挖掘实战案例】K-Means广告效果聚类分析
  7. 【架构设计】架构学习笔记--如何画好架构图(一)
  8. 教程向|如何更好还原褶皱,ZBrush雕刻褶皱的技巧!
  9. 一篇超详细的vue项目前端自动化测试教学!
  10. 90%人会猜错:比浓缩咖啡更浓的咖啡是什么?