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

RestKit / AFNetworking - Send only one request at a time (queue)

我正在使用 RestKit / AFNetworking 与私人通信 api。这个 API 是 return 在每次调用时使用一个 sessionID 的 cookie。如果您使用已使用的 sessionID 进行调用,它将 return 出错。所以每个sessionID只能使用一次

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

有没有办法让 RestKit / AFNetworking 仅在上次调用 return 与下一个 sessionID 编辑后才执行我的调用? 我希望能够只发送呼叫,但在最后一次呼叫成功或失败后延迟呼叫。

这正是 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;