我无法找到回答这个问题的问题。所以这里...... ..
警告:我是iOS和Objective-C新手。我在iOS 7.0应用程序中使用AFNetworking 2.0来执行异步网络请求。代码块如下:
- (void)requestLoad {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager GET:@"http://localhost:8000/api"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"The AFHTTP op returned successfully");
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"The AFHTTP op failed");
}];
}
在执行第一个请求(第一次调用此方法)时,我得到一个成功的返回日志,然后我关闭服务器并通过iOS模拟器执行相同的请求:我仍然继续成功返回。
我猜测库或iOS本身存在某种类型的URL缓存,但我无法将其关闭。或者是其他我做错了什么?
答案 0 :(得分:0)
您是否尝试过清理项目( cmd + shift + k )并重建它?
答案 1 :(得分:0)
事实证明,您需要使用requestWithURL:cachePolicy:timeoutInterval:
显式覆盖NSURLRequest缓存行为,因为默认情况下requestWithURL:
会将cachePolicy
设置为NSURLRequestUseProtocolCachePolicy
。因此,如果您的服务器指定缓存最大年龄为300,即使您在请求之间拆除服务器,NSURLRequest也会坚持原来的300秒缓存。
覆盖如下:
NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://localhost:8000/api"]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:1.0];
我还必须说“我的坏”,我记得先前在NSURLRequest
中关闭缓存是将cachePolicy设置为0,这已经相当于NSURLRequestUseProtocolCachePolicy
(参见:{{ 3}}
解决方案是将其设置为1.