AFNetworking - 与ETag的请求

Ayu*_*oel 5 objective-c ios afnetworking

我正在尝试在服务器上执行请求,该服务器响应Etag以进行缓存.我为它编写了以下代码,但这些调用的响应在大多数情况下是随机的,即有时响应状态代码为200,有时为304(预期).我在代码中做错了什么,或者AFNetworking有什么特别的东西我应该记住.

  NSURL *url = [NSURL URLWithString:@"http://ia.media-imdb.com/images/M/MV5BNzI0NTY5NzQwMV5BMl5BanBnXkFtZTcwOTQyNTA5OA@@._V1._SY90_.jpg"];
  NSMutableURLRequest *aRequest = [NSMutableURLRequest requestWithURL:url];
  [aRequest setValue:@"\"61-smtLpBSL_SY90_#1\"" forHTTPHeaderField:@"If-None-Match"];
  NSLog(@"headers: %@", aRequest.allHTTPHeaderFields);
  AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:aRequest imageProcessingBlock:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
    NSLog(@"%@ %d", response.allHeaderFields, response.statusCode);
  } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
    NSLog(@"Request failed with error: %@", error);    
  }];
  [operation start];
Run Code Online (Sandbox Code Playgroud)

Ama*_*ulo 0

我已经尝试过你的代码,并且收到状态 200 - OK,这应该是这样。

代码 304 - 未修改,我无法获取。我尝试过多次快速或缓慢地运行命令,但我总是得到 200 作为响应。

当您收到 304 作为响应代码时,您是否有更多详细信息?

304 响应代码通常意味着内容尚未被修改,您应该得到包含 200 作为响应的原始请求。

在这里您可以阅读有关 Etag 的更多信息:ETag 与 Header Expires