2012-10-23 105 views
2

我想在登錄後從網頁中提取一個cookie的值。我使用一個cookie助手類和android.webkit.CookieManager在網頁加載完成後檢索cookie onPageFinished()Android WebView不提取所有在不同設備上的cookie

這一切都很好,我可以看到我的測試設備,Galaxy S2(4.0.4),Galaxy S3(4.1.1)和HTC Explorer(2.3)上的cookie名稱和值。但是,相同的代碼在Sony Xperia(2.3)上不起作用?

我已註銷的網址,以確保我正在從正確的頁面工作,由於某種原因,我只能從Xperia網站獲得3個Cookie,我應該獲得7(大致)。

下面是我正在運行的代碼的簡化版本。感謝任何迴應。提前致謝!

WebViewActivity

@Override 
public void onPageFinished(WebView view, String url) { 
    if(!cookieCreated){ 
     CookieHelper cookieHelper = new CookieHelper(getApplicationContext()); 

     if(cookieHelper.processCookie(url)){ 
      cookieCreated = true; 
     } 
    } 
} 

CookieHelper

public CookieHelper(Context cont){ 
    this.cookieManager = CookieManager.getInstance(); 
} 


public void processCookie(String url){ 
    if(manager.getCookie(url).contains("cookie_name_required")){ 
     Log.d(TAG, "Got cookie"); 
    } 
    else{ 
     Log.d(TAG, "No cookie"); 
    } 
} 
+0

嗨,你有沒有得到任何解決方案?我也面臨同樣的問題。 –

回答

0
public static void setCookies(Context context) { 
    //gets all cookies from the HttpClient's cookie jar 


    List<Cookie> cookies = httpClient.getCookieStore().getCookies(); 

    if (! cookies.isEmpty()) { 

     CookieSyncManager.createInstance(context); 
     CookieManager cookieManager = CookieManager.getInstance(); 
     //sync all the cookies in the httpclient with the webview by generating cookie string 

     for (Cookie cookie : cookies) { 

      Cookie sessionInfo = cookie; 
      String cookieString = sessionInfo.getName() + "=" + sessionInfo.getValue() + "; domain=" + sessionInfo.getDomain(); 
      cookieManager.setCookie("zoboon.com", cookieString); 
      CookieSyncManager.getInstance().sync(); 
     } 

    } else { 

     Log.i("httpclient","has no cookies"); 

    } 
} 
+0

嗨,謝謝你的回覆。但是,究竟是在什麼時候創建了httpclient並且完成了它。你需要先發送一個GET嗎? – elgoog

+0

httpclient在您的第一個請求中創建,我認爲大多數情況下它會是登錄請求,然後您從它得到的Cookie與其在我的示例中爲「zoboon.com」的域同步 –

+0

@yousefsafwat可以請您更具體嗎?你能告訴我們你如何創建httpclient?謝謝 –

相關問題