1

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

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

不仅如此:
如果我在 ipad 上滚动系统时间 1 小时(故意)而不是关闭我的服务器 - 我会遇到同样的情况: JSONRequestOperation 开始给我与系统时间相同的对象仍然正确。

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

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

4

1 回答 1

0

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

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

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

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

于 2013-08-17T00:37:56.267 回答