AFHTTPRequestOperationManager针对死服务器调用成功块

时间:2014-02-20 15:36:18

标签: ios afnetworking-2

我无法找到回答这个问题的问题。所以这里...... ..

警告:我是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缓存,但我无法将其关闭。或者是其他我做错了什么?

2 个答案:

答案 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.