RestKit / AFNetworking - 一次只发送一个请求(队列)

时间:2015-05-06 09:33:35

标签: ios objective-c rest afnetworking restkit

我使用RestKit / AFNetworking与私人API进行通信。此API在每次调用时都返回一个带有sessionID的cookie。如果使用已使用的sessionID进行调用,则会返回错误。所以每个sessionID只能使用一次。

问题是,当同时发送两个请求时,一个会失败,因为它们都是在cookie中使用相同的sessionID发送的。

有没有办法让RestKit / AFNetworking仅在最后一次调用与下一个sessionID一起返回后执行我的调用? 我希望能够发送电话,但在最后一次通话成功或失败后让它们延迟。

1 个答案:

答案 0 :(得分:0)

这正是NSOperationQueue的用途:

初始化NSOperationQueue并将并发任务数设置为1:

NSOperationQueue *queue = [NSOperationQueue new];
queue.maxConcurrentOperationCount = 1;

请务必保留对队列的引用,否则将取消分配。

要将HTTP调用添加到队列,您必须继承NSOperation。编写子类,以便每个NSOperation实例在操作的-main方法中生成同步 HTTP请求,然后为下一个操作设置会话ID:

-(void)main {
// read the previous session ID
NSString *sessionID = [MyDataSingleton sharedInstance].sessionID;

//make synchronous call
...

//Set the session ID for the next operation
[MyDataSingleton sharedInstance].sessionID = sessionID;