2010-04-22 3 views
27

J'écris un client qui fait des requêtes http répétées pour les données xml qui changent avec le temps. Il semble que la pile Android met en cache mes demandes de page et renvoie la même page à plusieurs reprises. Comment est-ce que je m'assure qu'il obtient une nouvelle page chaque fois?Comment empêcher Android de renvoyer une réponse mise en cache à ma demande HTTP?

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

Merci, Gerry

Répondre

25

ajouter un en-tête HTTP:

Cache-Control: no-cache 

et voir si cela fonctionne.

+0

L'utilisation de no-cache et no-store ne semble pas affecter les résultats. L'ajout d'un faux paramètre qui semble ne pas fonctionner non plus. J'utilise: HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet (url); Réponse HttpResponse; try { request.setHeader ("Cache-Control", "no-cache"); request.setHeader ("Cache-Control", "no-store"); response = client.execute (requête); Quelqu'un d'autre a eu du succès avec ça? Sinon, la plate-forme est inutile pour moi. – Gerry

+0

Avez-vous ajouté les deux en-têtes? Ou juste un à la fois? – Kylar

+0

Les deux en-têtes en même temps. – Gerry

26

Annexer un paramètre utilisé à la fin de l'URL:

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

someRandomString() implique probablement l'heure actuelle .

C'est brut, mais il est pratiquement garanti de fonctionner indépendamment de tous les facteurs externes qui peuvent faire échouer une solution «appropriée», comme des proxys mal configurés ou bogués.

+1

qui a fait l'affaire pour moi, mais sont là l'en-tête du côté client d'ajouter afin de contourner le problème? – kaneda

2

Astuce: pour obtenir la chaîne aléatoire

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