2011-04-19 178 views
15

在檢查用戶名或密碼是否正確時,我從服務器收到HttpResponse。 當我加載一個webviewurl我想webView有餅乾(答案我與存儲在webViewpostData()得到我想要的web視圖皮卡Cookie,並存儲在網頁視圖該cookie加載的URL。將cookie設置爲Android中的webView

我得到過迴應

public HttpResponse postData() { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("https://example.com/login.aspx"); 

    try { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("txtUsername", "user")); 
     nameValuePairs.add(new BasicNameValuePair("txtPassword", "123")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     HttpResponse response = httpclient.execute(httppost); 
     String responseAsText = EntityUtils.toString(response.getEntity()); 
     Log.v(TAG , "Response from req: " + responseAsText); 
     return responseAsText; 

    } catch (ClientProtocolException e) { 

    } catch (IOException e) { 

    } 
    return null; 
} 

和我一起使用loadURL:

webView.loadUrl("http://a_page.com/getpage.aspx?p=home"); 

我想我並沒有真正管理一個cookie,我也不知道如何去做。 任何建議或解決方案?

+0

參考這個http://stackoverflow.com/questions/2566485/webview-and-ookie-on-android – 2012-09-27 14:22:16

回答

8

你可能會想看看這個解決方案:Android WebView Cookie Problem

+0

該解決方案的問題是,他從方法getCookie()獲取cookie,我不知道如何他寫了那個方法。 – 2011-04-19 14:03:39

+0

你看過這個問題的解決方案嗎?似乎有一個錯誤,但總的想法似乎是他們正在從他們的httpclient cookie存儲中讀取cookie並將它們寫入CookieManager,然後使用CookieSyncManager將其同步到webview。 – emmby 2011-04-19 14:14:03

6

這真的很簡單。

String cookieString = "cookie_name=cookie_value; path=/"; 
CookieManager.getInstance().setCookie(baseUrl, cookieString); 

其中cookieString格式化一樣一個更傳統的Set-Cookie HTTP標頭和baseUrl是餅乾應該屬於網站。

+0

最後我找到了一個解決方案,非常感謝喬治。快速提問。你知道這種cookie的持續時間是多少?或者設置它的參數是什麼? – JohnA10 2016-11-15 20:13:03

+1

這是一個會話cookie,因此它可能在應用程序關閉時過期。要使cookie永久化,您需要添加「過期」規則以設置明確的結束日期。在線搜索如何添加Cookie過期。如果您遇到問題,請隨時用代碼示例[請](http://stackoverflow.com/questions/ask)提供詳細的問題。 – 2016-11-15 20:34:12

0

只是想拋出另一種方式如何做到這一點。不要說這是最好的,但它是一種方式。您也可以使用JavaScript來設置Cookie。就在WebViewClient

​​

一兩件事這種方法覆蓋onPageFinished:你將不得不重新加載web視圖。如果有人知道如何解決這個問題,請評論。