Gerry
Gerry

Reputation: 1938

How to prevent Android from returning a cached response to my HTTP Request?

I'm writing a client that is making repeated http requests for xml data that is changing over time. It looks like the Android stack is caching my page requests and returning the same page repeatedly. How do I make sure it gets a fresh page each time?

-- code ---

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));

Thanks, Gerry

Upvotes: 28

Views: 16541

Answers (3)

Kylar
Kylar

Reputation: 9344

add a HTTP header:

Cache-Control: no-cache

and see if that works.

Upvotes: 25

Flavio Battocchio
Flavio Battocchio

Reputation: 75

Hint: to get the random string

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

Upvotes: 4

RichieHindle
RichieHindle

Reputation: 281875

Append an unused parameter on the end of the URL:

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

where someRandomString() probably involves the current time.

It's crude, but it's pretty much guaranteed to work regardless of all the outside factors that can make a "proper" solution fail, like misconfigured or buggy proxies.

Upvotes: 27

Related Questions