转自:http://www.67tgb.com/?p=536

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 :点我下载


更多相关文章

  1. android用户界面之按钮(Button)教程实例汇
  2. Android之应用程序基础
  3. android用户界面-组件Widget-地图视图MapView
  4. android用户界面-组件Widget-画廊视图Gallery
  5. Android(安卓)View的介绍和使用
  6. Android(安卓)中文 API (27) —— SeekBar.OnSeekBarChangeListene
  7. 【安卓笔记】android客户端与服务端交互的三种方式
  8. android Manifest.xml选项-android:ConfigChanges
  9. Android例子—直接通过Binder的onTransact完成跨进程通信

随机推荐

  1. Android开机画面修改
  2. android tabhost 图标
  3. android定时器Timer与TimerTask
  4. Android(安卓)OpenGL ES 读书笔记(1)
  5. Android中的国际化
  6. Android仿微信录制语音
  7. Android(安卓)Intent Activity 跳转几种
  8. Android的Bitmap处理大图片解决方法
  9. Android解析如何获取SDCard 内存
  10. Android(安卓)N进入分屏代码分析二