我的网络服务发送这些标题:
Cache-Control: public, max-age=60, max-stale=86400
现在,在我的第一个电话中,这是回复:
一分钟内的第二个电话是:
现在,过了一会儿,我删除了我的网络服务,然后再打电话。现在由于max-stale标头,我希望能够检索cacheResponse,以显示旧数据。 答案如下:
现在,cacheResponse.body()返回null,因此我无法使用旧数据,因此在String cb = cacheBody.string();
上崩溃。代码示例如下所示:
if(response.networkResponse() != null) {
System.out.println("There is no cache, or cache is invalidated.");
if(!response.isSuccessful()) {
System.out.println("Call is not successful");
if(response.cacheResponse() != null) {
System.out.println("There is a cache");
ResponseBody cacheBody = response.cacheResponse().body();
String cb = cacheBody.string();
System.out.println("cacheBody: " + cb);
return cb;
}
}
}
ResponseBody body = response.body();
if(body != null) {
String b = body.string();
System.out.println("body: " + b);
return b;
}
是否有这种行为,如果是,我该如何获取缓存的响应数据?
答案 0 :(得分:0)
添加此请求标头:
Cache-Control: max-stale=86400
这会导致OkHttp仅使用缓存。