AFNetworking的状态304仍在获取数据

时间:2014-11-15 23:47:08

标签: ios django afnetworking-2

我使用以下块调用我的服务器:

void (^ successBlock)(AFHTTPRequestOperation *operation, id jsonDictionary) = ^(AFHTTPRequestOperation *operation, id jsonDictionary) {
    NSLog(@"RESPONSE: %@", jsonDictionary);
};

void (^ failureBlock)(AFHTTPRequestOperation *operation, NSError *error) = ^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Failed: %@",[error localizedDescription]);
};

在我的服务器上,用Django编写的,无论如何都不会修改数据时发送HttpResponseNotModified。然而,应用程序有时会在successBlock中使用json响应(可能来自之前的请求)运行,然后有时会使用304状态代码转到failureBlock。是否有一个原因?我可以确认一个事实,即我的服务器正在发送304状态代码,因为我使用了调试点。为什么AFNetworking有时会获得缓存对象?它从何而来?

有时候,当发送304状态错误时,successBlock会运行...它应该始终点击failureBlock,因为它收到了状态错误代码。

1 个答案:

答案 0 :(得分:3)

如果您想让客户端始终获取并忽略304状态代码,则需要将cachePolicy的{​​{1}}设置为NSURLRequest

可以在http://blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache/http://nshipster.com/nsurlcache/找到有关此选项和其他选项的更多信息。我认为,当Mattt写AFNetworking时,NSHipster是一个很好的资源。