Android-HttpURLConnection自己主动管理cookie
生活随笔
收集整理的這篇文章主要介紹了
Android-HttpURLConnection自己主动管理cookie
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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.webkit.CookieManager。
總結
以上是生活随笔為你收集整理的Android-HttpURLConnection自己主动管理cookie的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部署DHCP服务
- 下一篇: php--点赞功能的实现