2016-03-15 61 views
1

我正在使用下面的代码从服务器获取数据。当数据在服务器上更新时,我从这个方法获得旧数据。当我在网络浏览器中使用相同的方法时,我得到更新的数据。获取缓存的其余数据android

即使当我停止应用程序并重新开始时,它反映了旧数据,但是当我使用任务管理器清理了所有任务后,我得到了新数据。

在设备上被缓存,因为我每个

String response = null; 
InputStream inputStream = null; 
HttpURLConnection urlConnection = null; 
try { 

    URL url = new URL(urlString); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    urlConnection.setReadTimeout(10000); 
    urlConnection.setConnectTimeout(15000); 

    if (method == POST) { 
     urlConnection.setDoInput(true); 
     urlConnection.setDoOutput(true); 
     urlConnection.setRequestProperty("Accept", "application/json"); 
     urlConnection.setRequestMethod("POST"); 
     OutputStream os = urlConnection.getOutputStream(); 
     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
     writer.write(params); 
     writer.flush(); 
     writer.close(); 
     os.close(); 
    } else { 
     urlConnection.setRequestMethod("GET"); 
    } 

    int statusCode = urlConnection.getResponseCode(); 

    /* 200 represents HTTP OK */ 
    if (statusCode == HttpURLConnection.HTTP_OK) { 
     inputStream = new BufferedInputStream(urlConnection.getInputStream()); 
     response = convertInputStreamToString(inputStream); 
     return response; 
    } 

我在网上搜索后发现,使用高速缓存默认是开启的,所以这两个行会帮助时间作出新的请求数据

urlConnection.setUseCaches(false); 
    urlConnection.addRequestProperty("Cache-Control", "no-cache"); 
+0

appende一些随机获取参数您的网址 – Amy

回答

1

追加一些随机参数,即当前时间戳到URL然后它将视为新的请求。

改变这种

URL url = new URL(urlString); 

URL url = new URL(urlString+new Date().getTime()); 
+0

u能告诉具体说理cauisng呢? –

+0

它解决了你的问题吗? – Amy

+0

我不能只是添加字符串到我的网址结束,我认为关闭urlconnection将解决问题 –