当用户使用我的应用程序但失去连接或使用飞行模式时,我遇到了问题。
我的应用程序服务器端没有设置任何缓存策略,目前我无法更改它。我从 AFNetworking 1.x 迁移到 2.0,现在我正在使用AFHTTPRequestOperationManager
提出请求时。问题是,因为我在服务器端没有缓存策略,所以每个请求都会向服务器发出(目前还好),但如果用户无法连接到我的服务器,则它不会加载缓存的请求。
所以,我正在尝试以下操作,使用AFHTTPRequestOperation
直接这样:
NSURL *URL = [NSURL URLWithString:filePath];
NSMutableURLRequest *request = [[NSURLRequest requestWithURL:URL] mutableCopy];
if (![[AFNetworkReachabilityManager sharedManager] isReachable]) {
[request setCachePolicy:NSURLRequestReturnCacheDataElseLoad];
}
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
[[NSOperationQueue mainQueue] addOperation:op];
这样,如果AFNetworkReachabilityManager
告诉我没有连接,我为请求配置了缓存策略,并且它从缓存中正确加载。
问题是,这是处理这种情况的正确方法吗?
你只需要子类化AFHTTPSessionManager
并检查客户端是否离线。然后,您可以更改缓存策略或强制应用程序使用缓存数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)