我使用 AFNetworking 作为我的应用程序的连接库。由于后端限制,我无法在应用程序启动时同时发送两个请求,因为服务器会识别出 CookieTheftException (Grails)。第一次成功连接后,我可以根据需要同时执行多个请求,但第一个请求必须是串行的。 我怎样才能做到这一点?
我想使用信号量,但我不能阻塞主线程。
编辑 1
我试图覆盖但没有成功。我认为操作队列不会等待一个请求完成(包括它的回调)来启动另一个请求。
- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation
{
[self.operationQueue setMaxConcurrentOperationCount:1];
[super enqueueHTTPRequestOperation:operation];
}
编辑2
我意识到 maxConcurrentOperation 起作用了,实际上一次执行了 1 个操作。问题是排队的请求已经在没有服务器需要的 cookie 的情况下创建。
最佳答案
我对 Grails 或您系统的特定架构一无所知,但也许这可以通过使用 NSMutableURLRequest -setHTTPShouldHandleCookies:
简单地关闭该请求的 cookie 来解决。
除此之外,确保初始调用只运行一个请求操作的最佳方法是完全忽略队列,并在 AFHTTPClient 上简单地设置一个
子类。您甚至可以使用 KVO 来确保在初始请求完成之前暂停操作队列。AFHTTPRequestOperation
属性
关于ios - AFNetworking - 序列化连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14387535/