我想获得一个JSON并在Internet可用时缓存它,或者如果不是则使用缓存。我使用了这段代码,但是当我离线时,request的responseString总是为null。 (文档说它只有在服务器返回200或300响应时才有效。
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
在没有网络连接的情况下获取缓存数据的想法吗?
谢谢。
答案 0 :(得分:2)
您可以使用:
[[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:]
获取磁盘上缓存的路径。如果没有缓存数据,则会返回nil
。
答案 1 :(得分:2)
您需要确保永久明确缓存请求(跨应用程序会话)。设置此:
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
请求缓存后,只要下载缓存的策略在远程连接失败时回退到缓存,它就会立即返回缓存的数据。 [ASIDownloadCache sharedCache]
应该已经设置为默认缓存策略,它可以很好地处理这种情况。