gpt4 book ai didi

Android:HttpResponseCache:在没有互联网连接时检索缓存的内容?

转载 作者:行者123 更新时间:2023-11-29 01:43:15 28 4
gpt4 key购买 nike

我想使用 HttpResponseCache

我的场景如下:

  • 当互联网连接可用时,服务器上的数据会正常检索并保存到缓存中。
  • 当没有互联网连接时,将检索并显示缓存数据。

我在以下 GitHub API URL 上对其进行了测试: https://api.github.com/users/blackberry/repos

我的代码如下

String loadData() {
HttpURLConnection urlConnection = null;
String response = null;
try {
URL url = new URL(
"https://api.github.com/users/blackberry/repos");
urlConnection = (HttpURLConnection) url.openConnection();



InputStream in = new BufferedInputStream(
urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
StringBuffer buffer = new StringBuffer();
String s = null;
while ((s = reader.readLine()) != null) {
buffer.append(s);
}
response = buffer.toString();
} catch (MalformedURLException e) {
Log.e("MalformedURLException", e.toString());
} catch (IOException e) {
Log.e("IOException", e.toString());
} finally {
urlConnection.disconnect();
HttpResponseCache cache = HttpResponseCache.getInstalled();
if (cache != null) {
cache.flush();
}
}
return response;
}

当我测试离线模式时,在以下位置抛出 IO 异常:

InputStream in = new BufferedInputStream(
urlConnection.getInputStream());

这里有什么问题吗?

最佳答案

这为时已晚,但可能会对某人有所帮助。我遇到了同样的问题,因为当网络可用时,它不会强制从服务器获取数据并获取缓存数据。

  if (IsNetAvailable(context)) {
urlConnection.addRequestProperty("Cache-Control", "max-age=0");
// urlConnection.setUseCaches(true);
} else {
int maxStale = 60 * 10; // tolerate 10 mins
urlConnection.addRequestProperty("Cache-Control", "max-stale=" + maxStale);
urlConnection.setUseCaches(true);
}

我使用了相同的代码并且可以很好地满足以下要求。

<强>1。网络可用时强制从服务器获取数据。

<强>2。离线时从缓存中获取数据。

关于Android:HttpResponseCache:在没有互联网连接时检索缓存的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23109270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com