一叶飘舟 2015-03-25 2065浏览量
转自:http://www.67tgb.com/?p=536
Cookie是为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据,在Android中也经常用到,接下来我们介绍Cookie在Android里是如何进行读写的。
Cookie其实就是一个字符串,由服务端生成。请求某些需要Cookie的URL的时候,将该字符串设置到Header中即可。
找到一个读写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()); }
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 : 点我下载
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
分享数据库前沿,解构实战干货,推动数据库技术变革