在Android應用程序中經常會加載一個WebView頁,如果需要客戶端向WebView傳遞信息,比如Cookie,也是可以的。
需要應用程序先將Cookie注入進去,打開該網頁時,WebView會將加載的url通過http請求傳輸到服務器。同時,在這次請求中,會將Cookie信息通過http header傳遞過去。
流程如下:
1、客戶端通過以下代碼設置cookie
public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();// 移除
cookieManager.setCookie(url, "uid=1243432");
CookieSyncManager.getInstance().sync();
}
2、CookieManager會將這個Cookie存入該應用程序/data/data/databases/目錄下的webviewCookiesChromium.db數據庫的cookies表中
3、打開網頁,WebView從數據庫中讀取該cookie值,放到http請求的頭部,傳遞到服務器
4、客戶端可以在注銷登錄時清除該應用程序用到的所有cookies
private void removeCookie(Context context) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
CookieSyncManager.getInstance().sync();
}
