一系列的http异步请求调用

时间:2011-05-03 10:07:26

标签: iphone

我需要在for循环中进行一系列http异步请求调用。但是,我需要等待下载完成响应才能进行下一个请求而不会崩溃。所以使用NSNotification(或其他任何东西)我如何处理这个问题。

3 个答案:

答案 0 :(得分:0)

当您执行异步请求时,您不需要等待。但是,您需要正确处理响应。您可以查看目前似乎是开发人员最喜欢的ASIHttpRequest库。 如果您必须等待响应,那么您不会异步执行此操作。

使用NSNotification,更简洁的方法是使用协议。这样就可以实现委托,并在每次调用委托方法时向您发送下一个请求。

答案 1 :(得分:0)

您希望在后台运行多个串行请求,并等待每个请求在下一个请求开始之前完成。这与在后台运行其他任何东西没什么不同。这是我掀起的事情:

[self performSelectorInBackground:@selector(runRequests) ...];

- (void)runRequests
{
    for (int i = 0; i < self.urls.count; i++) {
        NSURL *url = [self.urls objectAtIndex:i];
        ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
        [request startSynchronous]; // Note: not asynchronous
        // Handle response ...
        ALog(@"%@ completed", url);
    }
    [[NSNotificationCenter defaultCenter] 
          postNotificationName:@"all requests completed!" object:nil];
}

我在这里使用ASIHTTRequest,但在这种情况下使用NSURLRequest也一样。重要的是请求运行完成。

答案 2 :(得分:0)

你可以通过使用线程来实现,如下所示

[NSThread detachNewThreadSelector:@selector(myMethod1)toT​​arget:self withObject:nil];

[NSThread detachNewThreadSelector:@selector(myMethod2)toTarget:self withObject:nil];

[NSThread detachNewThreadSelector:@ selector(myMethod3)toTarget:self withObject:nil];

依旧........... 您可以异步传递这些方法中的请求。