用AFNetworking做离线下载遇到的小坑

之前用AFNetworking做过一个离线下载的功能,但是下载过程如果遇到服务器宕机或者报错,该下载包就一直不能重新下载了。经过排查,终于找出了原因所在:AFNetworking为了方便离线浏览,会将Url的Response默认缓存起来,其方法是:

- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block {
    self.cacheResponse = block;
}

所以,一旦Response被缓存后,下次不再重复发起连接,将直接将同样地Response返回,也就是说:网络正常的情况下,服务器出错,一旦服务器出错的Response被缓存,就算服务器修复后,也有可能造成iOS客户端持续报错。这种情况将是致命的。

解决方案:

[[NSURLCache sharedURLCache] removeAllCachedResponses];

用来清理所有URL缓存的Response

你可能感兴趣的:(用AFNetworking做离线下载遇到的小坑)