Настройка Cookies в WebView android
Я пытаюсь установить некоторые куки файлы на мой WebView
, чтобы открыть браузер с тем же сеансом, который у меня есть в моем приложении.
Я прочитал много ответов, но они не работают для меня. Единственное решение, которое я нашел, - это loadUrl
, hardcode данные cookie в extraHeaders
, но, как и ожидалось, это работает только для этих запросов и не поддерживает сеанс.
Код, который у меня есть:
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie("http://xx.xxx.example.com","mid="+MySession.GetSession().sessionId+" ; Domain=.example.com");
cookieSyncManager.sync();
String cookie = cookieManager.getCookie("http://xx.xxx.example.com");
Log.d(LOGTAG, "cookie ------>"+cookie);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new TuWebViewClient());
mWebView.loadUrl("http://xx.xx.example.com");
getCookie()
возвращает правильные данные, но когда я читаю файлы cookie с сервера, они пусты. Что не так? Пожалуйста, порекомендуйте.
Спасибо!
Ответы
Ответ 1
Решено!!!! проблема с webView, я не знаю, что произошло, но если я создаю
WebView webView = new WebView(Activity.this);
он работает. Если я прочитал webview из активности с помощью findViewById()
, это не сработает.
Также, если вам нужно установить список файлов cookie, которые вы получили ранее с веб-сайта.
Все, что вам нужно сделать, это использовать for-loop
, чтобы пройти и установить все из них. Это помогло мне решить ситуацию.
Ответ 2
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
...
cookieSyncManager.sync();
является причиной проблемы. Вы должны сделать следующее:
CookieSyncManager.createInstance(mWebView.getContext());
...
CookieSyncManager.getInstance().sync();
И не будет необходимости вручную создавать WebView...