android cookie管理,解決網頁訪問不了的問題
阿新 • • 發佈:2019-02-10
在做專案中,不免會有部分專案是要管理cookie,
1、登入成功後,把cookie儲存起來,我專案中就把cookie儲存到Application裡:
獲取cookie
/** * 獲取標準 Cookie */ private String getCookieText() { PersistentCookieStore myCookieStore = new PersistentCookieStore(this); List<Cookie> cookies = myCookieStore.getCookies(); for (Cookie cookie : cookies) { } Cookie cookie = null; StringBuffer sb = new StringBuffer(); for (int i = 0; i < cookies.size(); i++) { 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()); return sb.toString(); }
在登入成功時,獲取cookie並儲存到application:
AntsApplication.cookie = getCookieText();
2、在訪問網頁的Activity裡面,再次對cookie進行設定
String token = SharedPreferencesUtils.getParam(this, "token", ""); String userId = SharedPreferencesUtils.getParam(this, "userId", ""); WebSettings setting = contentWeb.getSettings(); setting.setJavaScriptEnabled(true); contentWeb.setWebViewClient(new MyWebViewClient()); // 注:下面的code寫在WebView的Activity裡 CookieSyncManager.createInstance(this); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); cookieManager.setCookie(Constant.URL_getArcitleInfo + "?token="+token+"&id="+id, AntsApplication.cookie); CookieSyncManager.getInstance().sync(); //載入網頁,必須放在最底下 contentWeb.loadUrl(Constant.URL_getArcitleInfo + "?token="+token+"&id="+id);