Как запретить Android возвращать кэшированный ответ на мой HTTP-запрос? - PullRequest
27 голосов
/ 22 апреля 2010

Я пишу клиент, который делает повторные запросы 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));

Спасибо, Gerry

Ответы [ 3 ]

27 голосов
/ 22 апреля 2010

Добавить неиспользуемый параметр в конце URL:

HttpGet request = new HttpGet(url + "?unused=" + someRandomString());

, где someRandomString(), вероятно, включает текущее время.

Это грубо, но в значительной степени гарантированно работает независимо от всех внешних факторов, которые могут привести к сбою "правильного" решения, например, неверно настроенных или глючных прокси.

25 голосов
/ 22 апреля 2010

добавить заголовок HTTP:

Cache-Control: no-cache

и посмотрите, работает ли это.

3 голосов
/ 21 августа 2015

Подсказка: чтобы получить случайную строку

HttpGet request = new HttpGet(url + "?unused=" + UUID.randomUUID().toString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...