2010-04-22 10 views
27

Piszę klienta, który robi wielokrotne żądania http dla danych XML, które zmienia się w czasie. Wygląda na to, że stos Androida buforuje moje żądania stron i wielokrotnie powraca do tej samej strony. Jak upewnić się, że za każdym razem otrzymuje świeżą stronę?Jak uniemożliwić Androidowi przywrócenie buforowanej odpowiedzi na moje żądanie HTTP?

- kod ---

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

Dzięki Gerry

Odpowiedz

25

dodać nagłówek http:

Cache-Control: no-cache 

i sprawdzić, czy to działa.

+0

Używanie no-cache i no-store nie ma wpływu na wyniki. Dodanie fałszywego parametru, który się zmienia, również nie działa. Używam: Klient HttpClient = new DefaultHttpClient(); HttpGet request = new HttpGet (url); Odpowiedź HttpResponse; spróbuj { request.setHeader ("Cache-Control", "no-cache"); request.setHeader ("Cache-Control", "no-store"); response = client.execute (request); Ktoś jeszcze odniósł z tym sukces? W przeciwnym razie platforma jest dla mnie bezużyteczna. – Gerry

+0

Czy dodano oba nagłówki? A może po jednym na raz? – Kylar

+0

Oba nagłówki w tym samym czasie. – Gerry

26

Dołącz nieużywany parametr na końcu adresu URL:

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

gdzie someRandomString() prawdopodobnie wiąże się aktualny czas .

To jest prymitywne, ale jest prawie pewne, że działa niezależnie od wszystkich czynników zewnętrznych, które mogą spowodować, że "właściwe" rozwiązanie zawiedzie, takie jak błędnie skonfigurowane lub błędne serwery proxy.

+1

To załatwiło sprawę do mnie, ale czy są jakieś nagłówek na stronie klienta, aby dodać w celu obejścia tego problemu? – kaneda

2

Podpowiedź: aby uzyskać losowy ciąg

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