Cookies & Webview-CookieSyncManager в Android!
У меня есть действие, которое позволяет вам войти на страницу. В следующем действии он должен отображать веб-страницу на основе файла cookie, если вход был успешным. Файл cookie перезаписывается, и я пытаюсь поместить его в webView со следующим кодом:
Cookie sessionCookie = LoginWebView.cookie;
CookieSyncManager.createInstance(webview.this);
CookieManager cookieManager = CookieManager.getInstance();
if (sessionCookie != null) {
cookieManager.removeSessionCookie();
String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
Log.v(TAG, "COOKIE SYNC: " + cookieString);
cookieManager.setCookie(domain, cookieString);
CookieSyncManager.getInstance().sync();
}
webView.setWebViewClient(new MyWebViewClient ());
webView.loadUrl("http://a_page.com/getpageiphone.aspx?p=home");
это с потерями основано на коде из других вопросов здесь, в StackOverflow, но когда я загружаю веб-страницу, она, похоже, не работает. Кажется, что-то очень не так с моим кодом, но я не вижу, где, и я начинаю думаю, я делаю что-то очень неправильное.
2 ответов
вы использовали эту строку -
if (sessionCookie != null) {
cookieManager.removeSessionCookie();
}
. Чтобы каждый раз получать новые файлы cookie.
кажется, что вы прошли через ту же проблему, с которой я столкнулся, проверьте ниже ссылку -
removeSessionCookie () выпуск android (code.google.com)
он говорит, что removeSessionCookie()
реализуется в потоке, поэтому, когда он вызывается, поток начинается и после setCookie(url, cookieString);
вызывается, он удаляет новый cookie, который вы только что установили.
Так что для некоторых устройства он работает хорошо, как removeSessionCookie()
уже выполняется, в то время как для некоторых он удаляет cookie, и мы получаем эту проблему.
С помощью SystemClock.sleep(500);
, вы просто дали системе закончить removeSessionCookie () сначала
Я предлагаю вам удалить этот removeSessionCookie();
поскольку вы устанавливаете только один файл cookie, он не будет конфликтовать с другими файлами cookie. Ваш код будет работать без проблем.
прежде всего, не забудьте прочитать значения заголовков, которые дает вам ваш сайт. Вы можете определить это через Wireshark.
во-вторых, когда вы знаете, как выглядит cookie (на основе ваших значений Wireshark), вы должны попытаться достичь тех же значений в своем коде. Не забудьте отладить значения cookie и внести изменения в сам файл cookie, если он не соответствует.