奇怪的AFNetworking行为:GET请求获取旧数据包

时间:2013-08-16 20:53:04

标签: afnetworking

我遇到了AFNetworking和JSONRequestOperation的一个非常奇怪的问题。我现在正在进一步调查,但到目前为止,我已经得到了一些我无法解释的结果:

我做什么:
1)构建xcode项目并在我的ipad上运行 2)将JSONRequestOperation发送到servlet
3)获取我的json对象
4)关闭我的服务器
5)再次发送JSONRequestOperation(到离线服务器)
。 。 。
6)JSONRequestOperation调用“success”回调并给我相同的json对象。而不是因为没有响应服务器而调用“失败”回调。

不止于此:
如果我在iPad上1小时轧钢系统时间回来(故意),而不是把我的服务器关闭 - 我得到相同的情况:JSONRequestOperation开始给我,而系统时间仍然是正确的,收到相同的对象。

在第二种情况下,我启动了Wireshark,并且看不到从我的ipad到我的服务器的GET请求。

同时
POST和DELETE请求正常工作:如果服务器停止,它们将失败,并且系统时间更改不会影响它们。

1 个答案:

答案 0 :(得分:0)

AFNetworking使用NSURLRequest,默认情况下缓存请求。

您可以设置cachePolicy属性以确定缓存请求的方式。默认情况下,它将遵循HTTP规范,该规范允许服务器发送HTTP标头,告知客户端何时以及需要多长时间缓存。我建议您保留此设置,并更新服务器上的缓存标头,告诉客户端不要缓存您不希望缓存的请求。

如果您不希望缓存任何请求,可以指定NSURLRequestReloadIgnoringLocalCacheDataNSURLRequestReloadIgnoringLocalAndRemoteCacheData。后者还通知代理/中介不要为您提供缓存响应。

请记住,如果通过覆盖[AFHTTPClient -requestWithMethod: path: parameters:]中的所有请求进行设置,您的应用将会运行得更慢,因为即使没有新数据可用,它也会下载数据。