我使用以下块调用我的服务器:
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
,因为它收到了状态错误代码。
答案 0 :(得分:3)
如果您想让客户端始终获取并忽略304状态代码,则需要将cachePolicy
的{{1}}设置为NSURLRequest
。
可以在http://blog.originate.com/blog/2014/02/20/afimagecache-vs-nsurlcache/和http://nshipster.com/nsurlcache/找到有关此选项和其他选项的更多信息。我认为,当Mattt写AFNetworking时,NSHipster是一个很好的资源。