1. 程式人生 > >android cookie管理,解決網頁訪問不了的問題

android cookie管理,解決網頁訪問不了的問題

在做專案中,不免會有部分專案是要管理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);