Как предотвратить возврат Android к кэшированному ответу на мой HTTP-запрос?

StackOverflow https://stackoverflow.com/questions/2692814

Вопрос

Я пишу клиента, который делает повторные 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());
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top