Cookie是为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据,在Android中也经常用到,接下来我们介绍Cookie在Android里是如何进行读写的。
   Cookie其实就是一个字符串,由服务端生成。请求某些需要Cookie的URL的时候,将该字符串设置到Header中即可。
   找到一个读写Cookie的场景还算容易:

   写Cookie的场景


   比如登录。在用户首次登录成功的时候,我们会从服务端取得Cookie,存储在用户手机的本地文件中。在用户下次打开应用时,会首先读取本地Cookie,Cookie没有过期的话,直接引导用户到相应界面,不再进行登录。

   读Cookie的场景

   除了登录之外,还有某些特殊的服务器请求,需要将本地Cookie信息一起发给服务端。


   直接上代码,获取Cookie:

  /**
* 获取标准 Cookie ,并存储
* @param httpClient
*/
private void getCookie(DefaultHttpClient httpClient) {
List<Cookie> cookies = httpClient.getCookieStore().getCookies();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < cookies.size(); i++) {
Cookie cookie = cookies.get(i);
String cookieName = cookie.getName();
String cookieValue = cookie.getValue();
if (!TextUtils.isEmpty(cookieName)
&& !TextUtils.isEmpty(cookieValue)) {
sb.append(cookieName + "=" );
sb.append(cookieValue + ";" );
}
}
Log. e( "cookie", sb.toString());
Util. savePreference( "cookie", sb.toString());
}

      获得了Cookie之后,一般存储到本地文件或者数据库中。在访问需要携带Cookie信息的url时,将Cookie读出,并设置到Header中,例如:

 DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(URLContainer.getPlayHistoryInCloud());
httpGet.setHeader( "Cookie" , Util.getPreference( "cookie"));
HttpResponse httpResponse;
try {
httpResponse = httpClient.execute(httpGet);
InputStream is = httpResponse.getEntity().getContent();
String jsonString = Util.convertStreamToString(is);
return jsonString;
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

DEMO下载地址:http://download.csdn.net/detail/androidsj/9390712

71、Android上对Cookie的读写操作的更多相关文章

  1. Android 对 properties文件的读写操作

    -. 放在res中的properties文件的读取,例如对放在assets目录中的setting.properties的读取:PS:之所以这里只是有读取操作,而没有写的操作,是因为我发现不能对res下 ...

  2. Android 学习笔记 文本文件的读写操作

    activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  3. js对Cookie的读写操作

    //读Cookie function getCookie(objName) {//获取指定名称的cookie的值 var arrStr = document.cookie.split("; ...

  4. Android 上多方式定位元素(python)

    Android 上多方式定位元素(python) 在学习实际UI自动化测试的时候,首先就需要定位元素,然而定位元素也是最头疼的地方,因为元素各种控件名称的缺失会影响元素的准确定位.下面针对Androi ...

  5. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  6. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  7. android报错及解决2--Sdcard进行文件的读写操作报的异常

    报错描述: 对Sdcard进行文件的读写操作的时候,报java.io.FileNotFoundException: /sdcard/testsd.txt (Permission denied),在往S ...

  8. android上让我放弃使用wstring来操作中英文字符串 转

    android上让我放弃使用wstring来操作中英文字符串 2013-08-07 16:37:24|  分类: cocos2d|举报|字号 订阅     项目需要,需要对中英文字符串进行遍历修改等, ...

  9. android sim 卡短信读写

    因为对短信读写操作的api 被隐藏了 , 我们须要使用<Java反射机制的学习>一文中提到的反射的方法得到隐藏API . 这有一个用例大家能够下载http://zhushou.360.cn ...

随机推荐

  1. Unity 开发游戏编写代码的技巧

    在平时开发游戏过程中,遇到一些编写代码很繁琐的问题. 我发现我团队中每个人都会遇到,就算打写出来分享下经验. 条件断点 利用IDE提供的工具, 右键断点的时候 输入条件, 当条件达成的时候,断点才能命 ...

  2. 启动loadrunner 11的controller提示试图执行系统不支持的操作(已解决)

    启动loadrunner 11的controller提示试图执行系统不支持的操作 分类: loadrunner 2014-05-12 17:33 532人阅读 评论(0) 收藏 举报 win7旗舰版3 ...

  3. css定位positon

    值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", " ...

  4. 【原创】打造基于Dapper的数据访问层

    [原创]打造基于Dapper的数据访问层   前言 闲来无事,花几天功夫将之前项目里用到的一个数据访问层整理了出来.实现单个实体的增删改查,可执行存储过程,可输出返回参数,查询结果集可根据实际情况返回 ...

  5. C# Interview Questions:C#-English Questions

    This is a list of questions I have gathered from other sources and created myself over a period of t ...

  6. python 去掉字符串的 "

    list_name = ["hello", "岚", "许言午", "公司", "赵六", &quo ...

  7. ui-router参数传递

    基本参数: ‘/user/:id' '/user/{id}' '/user/{id:int}' 使用正则表达式: '/user/{id:[0-9]{1,8}' '/user/{id:.*}' '/us ...

  8. Atitit.prototype-base class-based  基于“类” vs 基于“原型”

    Atitit.prototype-base class-based  基于“类” vs 基于“原型” 1. 基于“类” vs 基于“原型”1 2.  对象的产生有两种基本方式.一种是以原型(proto ...

  9. Python学习之read()方法

    read([size [,chars [,firstline]]]) 含义: 从文本流(io.TextIOWrapper)中解码数据并返回字符串对象.

  10. java虚拟机的逃逸分析

    逃逸分析作为其他优化手段提供依据的分析技术,其基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,例如作为调用参数传递到其他方法中,称为方法逃逸.甚至还有可能被外部线程 ...