AFNetworking可以处理请求队列吗?

时间:2014-02-28 06:47:36

标签: ios ios7 afnetworking afnetworking-2

我在iOS 6上的例子:

  • 10个多部分请求需要(按顺序)发送到服务器。 (所以请求形成一个队列)
  • 应该显示进展情况。
  • 如果一个请求失败,则所有后续操作都将失败
  • 请求队列应该可以取消

AFNetworking可以帮我解决这个问题吗?或者我应该尝试用NSOperations构建一些东西并自己运行循环?

如果我需要在这些请求之间传递上下文数据,例如第一个请求产生的事务id。我是否需要考虑有关线程可见性的任何考虑因素?

1 个答案:

答案 0 :(得分:3)

AFNetworking可以做到这一点。我建议您使用AFHTTPRequestOperationManager(它本身使用NSOperation),而不是AFHTTPSessionManager。有很多方法可以使用AFHTTPSessionManager来完成它,但没有一种方法可以像操作一样优雅。

在幕后,这是你没有经理的事情:

您将使用请求序列化程序来创建NSMutableURLRequest(例如,[AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:];也有类似的JSON请求序列化程序)。

获得网址请求后,请使用[AFHTTPRequestOperation -initWithRequest:]进行操作。您还应该设置完成块。

最后,将您的操作添加到[AFHTTPRequestOperationManager manager].operationQueuestart


既然您已经了解这基本上是如何协同工作的,那么这是一个更简单的方法:

  • 子类AFHTTPRequestOperationManager,如果您不喜欢默认
  • ,可以选择设置requestSerializer
  • 覆盖(或使用新实施进行复制)-POST:parameters:constructingBodyWithBlock:success:failure:] - 您想要做的不是立即start您的操作。
  • 设置NSOperation依赖关系链
  • start第一个