2010-04-22 65 views
27

我正在寫一個客戶端,它會對隨時間變化的xml數據重複發出http請求。它看起來像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)); 

感謝, 格里

回答

25

添加一個HTTP標頭:

Cache-Control: no-cache 

,看看是否可行。

+0

使用no-cache和no-store似乎不會影響結果。 添加一個改變的僞造參數似乎也不起作用。 我正在使用: HttpClient client = new DefaultHttpClient(); HttpGet request = new HttpGet(url); HttpResponse響應; 嘗試request.setHeader(「Cache-Control」,「no-cache」); request.setHeader(「Cache-Control」,「no-store」); request.setHeader(「Cache-Control」,「no-store」); response = client.execute(request); 其他人有這個成功嗎?否則,平臺對我來說毫無用處。 – Gerry 2010-04-26 19:59:51

+0

你添加了兩個頭文件嗎?或一次只有一個? – Kylar 2010-04-26 20:36:28

+0

兩個標題在同一時間。 – Gerry 2010-04-27 13:59:28

26

附加在URL末尾的未使用的參數:

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

其中someRandomString()可能涉及當前時間。

這很簡單,但它幾乎可以保證工作,不管所有可以使「正確」解決方案失敗的外部因素,如配置錯誤或錯誤的代理。

+1

這爲我做的伎倆,但沒有在客戶端上的任何標題,以規避問題補充的嗎? – kaneda 2012-06-10 19:57:24

2

提示:獲得隨機字符串

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