Volley那么好用的框架居然没有内置对cookie的处理,自己搞一个!
public class MobCookieManager {//转载请标明出处:http://blog.csdn.net/goldenfish1919/article/details/46890245private MobCookieManager(){}/*** 应用启动的时候调用,參考:{@link CookieManager#getInstance CookieManager.getInstance()}* */public static void init(Context context){CookieSyncManager.createInstance(context);}public static String getCookie(String url){CookieManager cookieManager = CookieManager.getInstance();return cookieManager.getCookie(url);}/*** http://stackoverflow.com/questions/16007084/does-android-webkit-cookiemanager-works-on-android-2-3-6* */public static void setCookies(String url, Map<String, List<String>> headerFields) {if (null == headerFields) {return;}List<String> cookies = headerFields.get("Set-Cookie");if (null == cookies) {return;}CookieSyncManager.getInstance().startSync();for (String cookie : cookies) {setCookie(url, cookie);}CookieSyncManager.getInstance().sync();}private static void setCookie(String url, String cookie) {CookieManager cookieManager = CookieManager.getInstance();cookieManager.setAcceptCookie(true);if(cookie.indexOf("Expires") < 0){cookie = addExpireToCookie(cookie);}cookieManager.setCookie(url, cookie);}/*** http://stackoverflow.com/questions/8547620/what-is-a-session-cookie* */private static String addExpireToCookie(String cookie) {Date expireDate = new Date(new Date().getTime() + 24L*60*60*1000);String datestr =DateUtil.format(DateUtil.east8ToGmt(expireDate), DateUtil.FORMAT_GMT);String arr[] = cookie.split(";");StringBuilder sb = new StringBuilder();sb.append(arr[0]);sb.append("; ").append("Expires=").append(datestr);if(arr.length > 1){for(int i=1; i<arr.length; i++){sb.append(";").append(arr[i]);}}return sb.toString();}}
</pre><pre name="code" class="java"><pre name="code" class="java">public class DateUtil {public static final String FORMAT_MDHM = "MM-dd HH:mm";public static final String FORMAT_YMD = "yyyy-MM-dd";public static final String FORMAT_YMDHM = "yyyy-MM-dd HH:mm";public static final String FORMAT_YMDHMS = "yyyy-MM-dd HH:mm:ss";public static final String FORMAT_GMT = "EEE, dd-MMM-yyyy HH:mm:ss 'GMT'";private static final String TAG = DateUtil.class.getSimpleName();private static final Locale DEFAULT_LOCALE = Locale.CHINA;private static ThreadLocal<Map<String, SimpleDateFormat>> threadLocal = new ThreadLocal<Map<String, SimpleDateFormat>>() {  protected synchronized Map<String, SimpleDateFormat> initialValue() {  Map<String, SimpleDateFormat> map = new HashMap<String, SimpleDateFormat>();map.put(FORMAT_MDHM, new SimpleDateFormat(FORMAT_MDHM, DEFAULT_LOCALE));map.put(FORMAT_YMD, new SimpleDateFormat(FORMAT_YMD, DEFAULT_LOCALE));map.put(FORMAT_YMDHM, new SimpleDateFormat(FORMAT_YMDHM, DEFAULT_LOCALE));map.put(FORMAT_YMDHMS, new SimpleDateFormat(FORMAT_YMDHMS, DEFAULT_LOCALE));map.put(FORMAT_GMT, new SimpleDateFormat(FORMAT_GMT, DEFAULT_LOCALE));return map;  }  };  private DateUtil(){}public static SimpleDateFormat getDateFormat(String format) {  Map<String, SimpleDateFormat> map = (Map<String, SimpleDateFormat>) threadLocal.get();  SimpleDateFormat sdf = map.get(format);if(sdf != null){return sdf;}try{sdf = new SimpleDateFormat(format, DEFAULT_LOCALE);map.put(format, sdf);}catch(Exception e){MyLog.e(TAG, e);}return sdf;}  public static Date parse(String textDate, String format) { if(textDate == null || textDate.length() <= 0){return null;}try{SimpleDateFormat sdf = getDateFormat(format);if(sdf == null){return null;    }return sdf.parse(textDate);  }catch(Exception e){MyLog.e(TAG, e);return null;}}  public static String format(Date date, String format){if(date == null){return null;}SimpleDateFormat sdf = getDateFormat(format);if(sdf == null){return null;}return sdf.format(date);}public static Date east8ToGmt(Date src){if(src == null){return null;}TimeZone srcTimeZone = TimeZone.getTimeZone("GMT+8");  TimeZone destTimeZone = TimeZone.getTimeZone("GMT");  long targetTime = src.getTime() - srcTimeZone.getRawOffset() + destTimeZone.getRawOffset();  return new Date(targetTime);}}

注意:我们这里使用的android.webkit.CookieManager。

Android-HttpURLConnection自己主动管理cookie相关推荐

  1. Android如何使用读写cookie的方法

    http://www.cnblogs.com/cosiray/archive/2012/06/25/2562117.html 可以使用SharedPreferences或者SQLite来保存用户信息 ...

  2. Android httpUrlConnection的基本使用

    今天,简单讲讲Android HttpUrlConnection的使用. 我在项目里是使用OK HTTP的,但是最近发现使用OK HTTP好多不知道的问题,感觉自己对基本的网络请求不是很好的掌握,所以 ...

  3. android中获取网页cookie的工具方法

    1.应用场景 我自己的应用场景是,做一个股票分时图控件demo,需要抓取同花顺网站上的分时图数据,但是这个分时图数据的链接做了cookie校验,直接用httpurlconnection访问,返回403 ...

  4. Android - HttpURLConnection 抛出异常

    HttpURLConnection 抛出异常 本文地址: http://blog.csdn.net/caroline_wendy Http的URL链接, 会发生错误, 主要原因是 在主UI线程中, 使 ...

  5. Android HttpURLConnection Post 参数 (https)

    声明utf-8: 1 public static String CHARSET_UTF8 = HTTP.UTF_8; eg:登陆请求方法,通过接口返回结果: 1 public static void ...

  6. Android中http断点下载,Android HttpURLConnection断点下载(单线程)

    HttpCilent 跟 HttpURLConnection 是安卓原生的用来实现http请求的类: Android 6.0之后取消了HttpClient,不支持跟新 ,今天小编使用的是HttpURL ...

  7. android httpurlconnection 超时 重发_Android / Java | 向服务器传文件

    最近在帮老板做一个 Android 项目,项目中有修改头像的需求,甲方给的接口是,先将图片传到他们的服务器,返回一个 URL,然后将这个 URL 的变化修改到用户信息.(感觉有点sb) 没办法,他们给 ...

  8. android 设置系统壁纸,Android HttpURLConnection下载网络图片设置系统壁纸

    需求: 壁纸是url链接,get就能请求到,所以就用get请求到图片,把图片转化为bitmap,然后设置壁纸. 代码: 这里我封装了工具类 package xxxxx.utils; import an ...

  9. Android HttpURLConnection下载网络图片,设置系统壁纸

    需求: 壁纸是url链接,get就能请求到,所以就用get请求到图片,把图片转化为bitmap,然后设置壁纸. 代码: 这里我封装了工具类 package xxxxx.utils;import and ...

最新文章

  1. Python学习笔记:Day1-2 开发环境搭建
  2. 微信开放平台,微信登陆第三方网站 提示redirect_uri 参数错误
  3. 如何制作流畅有力的游戏动画+Skullgirls案例分析
  4. 抖音xgorgon0408分析
  5. 如何设置jinternalframe无边框_word文档美化技巧:加个边框提升版面颜值
  6. 探索适用于Apache Spark的Spline Data Tracker和可视化工具(第2部分)
  7. linux 脚本 试题,10个Linux脚本面试题,看看你能答出几个?
  8. Xadmin添加用户小组件出错
  9. 【后空翻机器人代码】斯坦福后空翻机器人设计、代码全开源,成本降至3000美元,人人皆可DIY|湾区人工智能...
  10. 月薪2万程序员面试,被HR直面吐槽:毕业生能值这个数?
  11. 文件下载测试的测试点
  12. Win10应用商店无法下载XBOX怎么办?
  13. python 文件对话框 颜色对话框_PyQt5系列教程(9):颜色、字体、打开文件对话框...
  14. 《 极秀校园行Windows XP SP3装机专版 》 光盘介绍
  15. 游戏辅助原理与制作02-植物大战僵尸02-金币基址
  16. MT【217】韦达定理应用
  17. 《简单的逻辑学》阅读笔记(思维导图)
  18. 利用0.618法(黄金分割法)求极小值
  19. 全屏功能-实现全屏-图标切换
  20. 使用Linux版印象笔记nixnote2

热门文章

  1. linux下的mysql修改默认编码
  2. MySQL 字段数据类型/长度
  3. 硬盘分区表知识——详解硬盘MBR(转)
  4. javascript中使用重载
  5. 对B样条的理解和整理
  6. CCF-CSP 201903-1 小中大(C++满分代码)
  7. Android Webview H5 秒开方案实现
  8. Zabbix3.X---Zabbix _Agent主动模式的监控(Active)
  9. linux 安装系统划分lvm分区
  10. 告警系统邮件引擎、运行告警系统