2011-03-29 46 views
0

我試圖打開Web站點(在Android中)需要標記/ Cookie進行身份驗證的Web視圖。帶有標題連接錯誤的WebView

我試着用以下數值 的errorCode打開使用代碼的頁面下方

HashMap<String,String> headers = new HashMap<String,String>(); 
headers.put("Cookie","MyToken"); 
MyWebView.loadUrl("https://myURL.com",headers); 

我打了onReceivedError-6 * 說明:到服務器的連接是不成功。 *

(PS:由於這個網站可以從內聯網接入,使用模擬器我沒有在頁面加載正確地看到這個錯誤也HttpPost正常工作與同理)

回答

0

這不是一個valid cookie header。嘗試:

​​
+0

嗨,感謝您的投入,其實我加入cookie的格式如上所述。字符串MyToken是在添加Session標籤後創建的,因此MyToken就像「name = value」 – hemant 2011-03-30 01:16:41

+0

其他原因?我正在進一步調試該問題並懷疑設備上發生超時而不是Emulator?想知道我們是否可以爲WebView客戶端設置超時參數? – hemant 2011-03-30 18:32:13

2

這只是一個關於將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,