這只是一個關於將cookie添加到Web視圖的快速文章。如果你曾經試圖按照大多數人所說的那樣來完成這個任務,那麼你失敗了,並且找到了這篇文章。 :)
它應該工作的方式是您在CookieManager上設置Cookie,然後告訴CookieSyncManager進行同步。
CookieManager.getInstance().setCookie(domain, value);
CookieSyncManager.getInstance().sync();
我從來沒有如此描述過這個工作。有或沒有異步任務等待線程趕上。
相反,我只是在所有loadUrl調用的標題中添加cookie。
Map<String, String> headers = new HashMap<String, String>();
headers.put("Cookie", "cookieName=cookieValue;domain=domain.com;path=/;Expires=Thu, 2 Aug 2021 20:47:11 UTC;");
webView.loadUrl("myurl.com", headers);
警告:我只需要最初加載相應的cookie的請求時,如果你想從在瀏覽器中,你需要重寫shouldOverrideUrlLoading覆蓋嵌套調用。
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url, headers);
return false;
}
});
如果你需要注入cookie的所有請求(包括圖片,JS等),你將需要重寫shouldInterceptRequest,
嗨,感謝您的投入,其實我加入cookie的格式如上所述。字符串MyToken是在添加Session標籤後創建的,因此MyToken就像「name = value」 – hemant 2011-03-30 01:16:41
其他原因?我正在進一步調試該問題並懷疑設備上發生超時而不是Emulator?想知道我們是否可以爲WebView客戶端設置超時參數? – hemant 2011-03-30 18:32:13