Как предотвратить возврат Android к кэшированному ответу на мой HTTP-запрос?
-
01-10-2019 - |
Вопрос
Я пишу клиента, который делает повторные HTTP-запросы для данных XML, которые меняются со временем. Похоже, что стек Android кэширует мою страницу запросы и возвращает ту же страницу несколько раз. Как мне убедиться, что он получает свежую страницу каждый раз?
- код ----
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response;
response = client.execute(request);
InputStream in;
in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
Спасибо, Джерри
Решение
Добавьте заголовок HTTP:
Cache-Control: no-cache
и посмотреть, если это работает.
Другие советы
Добавьте неиспользуемый параметр на конец URL:
HttpGet request = new HttpGet(url + "?unused=" + someRandomString());
куда someRandomString()
вероятно, включает в себя текущее время.
Это грубые, но это в значительной степени гарантированно работать независимо от всех внешних факторов, которые могут сделать «правильное» решение.
Подсказка: чтобы получить случайную строку
HttpGet request = new HttpGet(url + "?unused=" + UUID.randomUUID().toString());
Не связан с StackOverflow