我正在使用下面的代码从服务器获取数据。在服务器上更新数据时,我从此方法获取旧数据。当我在网络浏览器中使用相同的方法时,我会获取更新的数据。
即使当我停止应用程序并再次启动时,它也反映了旧数据,但是当我使用任务管理器清理了所有任务后,我就会获得新数据。
每次我发出新请求时,数据是否缓存在设备上
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");
最佳答案
将一些随机参数(即当前时间戳)添加到URL,然后将其视为新请求。
改变这个
URL url = new URL(urlString);
至
URL url = new URL(urlString+new Date().getTime());