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

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

package com.rainet.tiis.network;  import java.util.Iterator;
import java.util.List;
import java.util.Map;  import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;  import android.util.Log;  /** * @project:                    TIIS  * @Title:                      SimpleClient.java        * @Package                     com.rainet.tiis.network      * @Description:                HTTP请求factory * @author                      杨贵松    * @date                        2014-3-18 下午12:39:23  * @version                     V1.0 */
public class SimpleClient {  private static HttpParams httpParams;  private static DefaultHttpClient httpClient;  private static String JSESSIONID; //定义一个静态的字段,保存sessionID  /** * @Title:              getHttpClient  * @author              杨贵松 * @date                2014-3-18 下午1:11:18 * @Description:        获取HttpClient * @return * @throws Exception  * HttpClient               返回 */  public static HttpClient getHttpClient() throws Exception {  // 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的)  httpParams = new BasicHttpParams();  // 设置连接超时和 Socket 超时,以及 Socket 缓存大小  HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000);  HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000);  HttpConnectionParams.setSocketBufferSize(httpParams, 8192);  // 设置重定向,缺省为 true  HttpClientParams.setRedirecting(httpParams, true);  // 设置 user agent  String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6";  HttpProtocolParams.setUserAgent(httpParams, userAgent);  // 创建一个 HttpClient 实例  // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient  // 中的用法,在 Android 1.5 中我们需要使用 Apache 的缺省实现 DefaultHttpClient  httpClient = new DefaultHttpClient(httpParams);  return httpClient;  }  /** * @Title:              doGet  * @author              杨贵松 * @date                2014-3-18 下午12:39:58 * @Description:        doGet请求 * @param url * @param params * @return * @throws Exception  * String               返回 */  @SuppressWarnings("rawtypes")  public static String doGet(String url, Map params) throws Exception {  /* 建立HTTPGet对象 */  String paramStr = "";  if (params != null) {  Iterator iter = params.entrySet().iterator();  while (iter.hasNext()) {  Map.Entry entry = (Map.Entry) iter.next();  Object key = entry.getKey();  Object val = entry.getValue();  paramStr += paramStr = "&" + key + "=" + val;  }  }  if (!paramStr.equals("")) {  paramStr = paramStr.replaceFirst("&", "?");  url += paramStr;  }  HttpGet httpRequest = new HttpGet(url);  String strResult = "doGetError";  /* 发送请求并等待响应 */  HttpResponse httpResponse = httpClient.execute(httpRequest);  /* 若状态码为200 ok */  if (httpResponse.getStatusLine().getStatusCode() == 200) {  /* 读返回数据 */  strResult = EntityUtils.toString(httpResponse.getEntity());  } else {  strResult = "Error Response: " + httpResponse.getStatusLine().toString();  }  Log.v("strResult", strResult);  return strResult;  }  /** * @Title:              doPost  * @author              杨贵松 * @date                2014-3-18 下午12:39:38 * @Description:        doPost请求 * @param url * @param params * @return * @throws Exception  * String               返回 */  public static String doPost(String url, List<NameValuePair> params) throws Exception {  /* 建立HTTPPost对象 */  HttpPost httpRequest = new HttpPost(url);  String strResult = "doPostError";  /* 添加请求参数到请求对象 */  if (params != null && params.size() > 0) {  httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));  }  if(null != JSESSIONID){  httpRequest.setHeader("Cookie", "JSESSIONID="+JSESSIONID);  }  /* 发送请求并等待响应 */  HttpResponse httpResponse = httpClient.execute(httpRequest);  /* 若状态码为200 ok */  if (httpResponse.getStatusLine().getStatusCode() == 200) {  /* 读返回数据 */  strResult = EntityUtils.toString(httpResponse.getEntity());  /* 获取cookieStore */  CookieStore cookieStore = httpClient.getCookieStore();  List<Cookie> cookies = cookieStore.getCookies();  for(int i=0;i<cookies.size();i++){  //这里是读取Cookie['JSSESSID']的值存在静态变量中,保证每次都是同一个值if("JSESSIONID".equals(cookies.get(i).getName())){  JSESSIONID = cookies.get(i).getValue();  break;  }  }  }  Log.v("strResult", strResult);  return strResult;  }  }  

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

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

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

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

  2. HttpClient工具类及应用

    Content-Type类型: 常见的媒体格式类型如下: text/html : HTML格式 text/plain :纯文本格式 text/xml : XML格式 image/gif :gif图片格 ...

  3. Java开发小技巧(五):HttpClient工具类

    前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...

  4. HttpClient工具类

    HttpClient工具类 package cn.sh.steven.httpclient;import com.alibaba.fastjson.JSON; import com.alibaba.f ...

  5. 14、阿里云短信Demo演示、Http的Get请求和Post请求演示、httpClient工具类演示、发送短信模块搭建、搭建用户中心模块、完成user注册基本功能、验证码存入redis、短信验证码注册

    阿里云短信Demo演示 一.前端部分 无前端. 二.后端部分 1.创建发送短信测试模块SmsSendDemo,不用使用骨架. 2.在pom文件中引入依赖坐标 <dependency>< ...

  6. apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离

    第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...

  7. 使用单例模式实现自己的HttpClient工具类

    本文转载自:http://www.cnblogs.com/codingmyworld/archive/2011/08/17/2141706.html 使用单例模式实现自己的HttpClient工具类 ...

  8. 工具类-httpClient工具类

    httpClient工具类 1.httpClient工具类(http/https.重发.超时.连接数的设置) package com.xxxxxxx.xxxx.xxxx.payutil;import ...

  9. HttpClient工具类封装

    HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议.HttpCli ...

最新文章

  1. 近期活动盘点:2018数据与媒介发展论坛、大数据应用中日交流论坛(11.04-11.15)...
  2. OpenGL RGTC Compressor压缩实例
  3. QT的QQuickImageProvider类的使用
  4. swingbench oracle rac,使用Swingbench压力测试Oracle RAC
  5. Freescale MC9S08AW60汇编学习笔记(五)
  6. 413 Request Entity Too Large
  7. JAVA回调函数的例子_javascript : 回调函数例子
  8. Blizzard Transitions for Mac - 动态风雪过渡效果FCPX转场
  9. CodeVS 3027 线段覆盖2(DP)
  10. python3的文件读写模式
  11. vba判断是否为数字的方法小集
  12. 台式机就是指什么的计算机,什么是台式机操作系统
  13. 哈工大ltp词性标注列表和ICTCLAS词性列表
  14. 一款游戏让你成为 Vim 高手!
  15. 2020前端最新面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)(3年前端菜鸟级开发师含泪总结)
  16. 目标-过程-结果经验分享及OKR工作法
  17. 通俗理解 set,dict 背后的哈希表
  18. Linux下的QQ客户端EVA初试以及ibus输入法问题的解决方法
  19. Power Automate:发送带有SharePoint列表附件的邮件
  20. vue 踩坑笔记 二.vue引入阿里矢量图库的矢量图

热门文章

  1. 使用JS校验身份证号
  2. 中国有色金属行业投资现状及未来发展前景预测报告2022-2028年
  3. LeetCode 827 最大人工岛 C++
  4. 判定覆盖白盒测试java_白盒测试系列(四)条件判定覆盖
  5. 男人的这十大幼稚行为 女人最讨厌
  6. 【资源下载】超级好用的几款免费图床
  7. Linux系统的tomcat以daemon模式启动
  8. vue 组件递归(组件自己调用自己)
  9. Centos7开机启动docker
  10. 2022年博客新星排行榜 日榜 2023-01-03 博客新星榜