我使用RestKit / AFNetworking与私人API进行通信。此API在每次调用时都返回一个带有sessionID的cookie。如果使用已使用的sessionID进行调用,则会返回错误。所以每个sessionID只能使用一次。
问题是,当同时发送两个请求时,一个会失败,因为它们都是在cookie中使用相同的sessionID发送的。
有没有办法让RestKit / AFNetworking仅在最后一次调用与下一个sessionID一起返回后执行我的调用? 我希望能够发送电话,但在最后一次通话成功或失败后让它们延迟。
答案 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;