2010-04-22 3 views
27

Я пишу клиент, который делает повторяющиеся HTTP-запросы для xml-данных, которые меняются со временем. Похоже, что Android-стек кэширует мои запросы на страницы и повторно возвращает одну и ту же страницу. Как я могу убедиться, что он получает новую страницу каждый раз?Как запретить Android возвращать кешированный ответ на мой HTTP-запрос?

- код ---

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

ответ

25

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

Cache-Control: no-cache 

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

+0

Использование no-cache и no-store не влияет на результаты. Добавление изменчивого параметра, похоже, тоже не работает. Я использую: HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet (url); HttpResponse response; try { request.setHeader («Cache-Control», «no-cache»); request.setHeader («Cache-Control», «no-store»); response = client.execute (запрос); У кого-нибудь еще был успех? В противном случае платформа бесполезна для меня. – Gerry

+0

Вы добавили оба заголовка? Или только по одному? – Kylar

+0

Оба заголовка одновременно. – Gerry

26

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

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

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

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

+1

Это сделал трюк для меня, но есть какой-либо заголовка на стороне клиента, чтобы добавить для того, чтобы обойти эту проблему? – kaneda

2

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

HttpGet request = new HttpGet(url + "?unused=" + UUID.randomUUID().toString()); 

 Смежные вопросы

  • Нет связанных вопросов^_^