Срок действия Java CookieManager или CookieHandler истекает? - PullRequest
0 голосов
/ 21 мая 2018

Я делаю HTTP-запросы к сайту, используя следующее:

// выполняется при первом обращении к серверу

static {
        cookieManager = new CookieManager();
        cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);     
        CookieHandler.setDefault(cookieManager); 
}

, а следующее делает фактический вызов

            BufferedReader reader = null;
            HttpURLConnection conn = null;

            URL url = new URL(urlString);
            conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000);
            conn.addRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0");

//I added these 2 lines as a trial to fix this problem but failed           
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);     
            CookieHandler.setDefault(cookieManager); 

            conn.connect();         
            InputStream in = conn.getInputStream();
...

Вышеописанное прекрасно работает в течение некоторого времени, но в какой-то момент (не знаю, сколько точно времени) полученный ответ говорит о том, что мои куки отключены и что я должен их включить.Перезапуск сервера заставляет его работать снова, пока это не произойдет снова, и так далее ...

у cookieManager и cookieHandler в какой-то момент истекает срок действия?Я что-то пропустил?Спасибо

1 Ответ

0 голосов
/ 21 мая 2018

Вы не можете контролировать это на уровне CookieManager, но непосредственно в самом файле cookie.HttpCookie имеет setMaxAge(long expiry) устанавливает максимальный возраст файла cookie в секундах.

Как видно из исходного кода HttpCookie, гдеMAX_AGE_UNSPECIFIED и документация метода getMaxAge(), в которой значение по умолчанию установлено на -1.

По умолчанию -1 указывает, что cookie будет сохраняться до закрытия браузера.

setMaxAge(long expiry) гласит следующее:

Отрицательное значение означает, что файл cookie не сохраняется постоянно и будет удален при выходе из веб-браузера.

...