CookieSyncManager同步异步行为

时间:2013-11-28 14:36:48

标签: android android-webview

我的问题与Cookies & Webview - CookieSyncManager in Android!非常相似,但我确实需要调整SystemClock.sleep()时间或其他方式让setCookie立即做出反应。没有使用500毫秒,但使用5000毫秒,所以它不是很可靠。在onPageStarted之后sync CookieManager之后setCookie调用WebView的任何方式来循环睡眠?

我的环境从另一台服务器获取Cookie值,因此这里没有会话cookie。

感谢。

更新:

看起来Cookie处理根本不起作用。我有以下网络流程:

  1. 设置Cookie并加载网址
  2. 服务器处理Cookie没问题,因此它添加了另一个cookie来表示我们有会话
  3. WebView仍会加载显示无会话的页面
  4. 我再次启动getCookie,现在{{1}}显示会话Cookie并正确加载页面

2 个答案:

答案 0 :(得分:1)

我在应用程序中出现setCookie之前最终调用WebView(我从另一台服务器获取Cookie值),同时添加了WebViewClient onPageStartedonPageFinished cookie同步,它似乎正在工作,我不必导致睡眠延迟。

答案 1 :(得分:0)

在调用webview.loadUrl(url)之前,我添加了一个while循环来检测是否已经注入了url的cookie。如果没有异步设置cookie,请休眠一段时间。希望它有所帮助。

while (!CookieManager.getInstance().hasCookies() 
    || CookieManager.getInstance().getCookie(url)==null){
        SystemClock.sleep(TIME_WAITING_FOR_COOKIE_SYNC);
    }
webview.loadUrl(url);