Несколько файлов cookie в CookieManager
Давайте подготовимся к хранению печенья:
CookieSyncManager.createInstance(getApplicationContext());
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().setAcceptCookie(true);
Затем я ставлю вручную некоторые куки, скажем, PHPSESSID
а также RANDOM
CookieManager.getInstance().setCookie("domain.com", "PHPSESSID="+phpSession);
CookieManager.getInstance().setCookie("domain.com", "RANDOM="+random);
давайте проверим, работает ли он с помощью:
CookieManager.getInstance().getCookie("domain.com");
и получил
PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56; RANDOM=266284790:1466147978:c91d0896bac59e0b
Все выглядит хорошо, но когда я вхожу в приложение может к одному из WebView
Действия, которые открывают веб-сайт того же домена, также устанавливают куки, тогда, когда я печатаю куки, как показано выше, это выглядит так:
PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56;
RANDOM=266284790:1466147978:c91d0896bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243;
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123
дублированные записи... когда после этого я вручную установить снова, например, RANDOM с setCookie
:
PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56;
RANDOM=111111111:2222222222:33333336bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243;
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123
значения, установленные WebView
не перезаписываются, только мои "вручную" вошли... как заставить WebView
использовать мой ранее установленный файл cookie ИЛИ перезаписать уже установленный?
2 ответа
Как в документах MDN о Set-Cookie
Вы можете увидеть много разных видов значений cookie, cookie может быть установлен для конкретного Path
Имя-куки = куки-значение; Путь = путь-значение
И в CookieManager.setCookie
void setCookie (String url, String value)
, ссылка на Android говорит:
Устанавливает cookie для данного URL. Любой существующий файл cookie с тем же хостом, путем и именем будет заменен новым файлом cookie. Установленный файл cookie будет игнорироваться, если срок его действия истек.
По моему мнению, причина того, что у вас есть повторяющиеся записи, заключается в том, что значения cookie были в разных Path
, Поэтому, если вы хотите перезаписать, убедитесь, что имя хоста совпадает.
private void setCookieManager(String auth_token) {
CookieSyncManager manager = CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie(auth_token);
manager.sync();
}
Я думаю, вы просто не правильно настроили свой менеджер файлов cookie. Дайте это попробовать