0

我遇到了一个非常奇怪的 NSURLConnection 问题。我有一个控制器,它使用以下函数在 viewDidLoad 方法中发出三个异步 GET 请求:

+ (void)connectAsyncWithURL:(NSURL *)url httpMethod:(NSString *)httpMethod delegate:(id <NSURLConnectionDelegate>)delegate timeout:(NSTimeInterval)timeout
{
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:timeout];
    [request setHTTPMethod:httpMethod];
    [NSURLConnection connectionWithRequest:request delegate:delegate];
}

前两个连接按预期工作。然而,第三个挂起,直到发生超时。失败后重试会导致调用成功。请求的顺序似乎并不重要——总是最后一个调用失败的那个。我拥有正在向其发出请求的服务器,并且观察传入的网络流量向我显示了前两个请求,但在初始超时之前,第三个 NSURLConnection 不会出现第三个请求。更奇怪的是,在超时发生后,如果我离开控制器并再次返回,则在我重新启动应用程序之前,问题不再重现。

有谁知道是什么原因造成的?

4

1 回答 1

3

一些服务器会将来自单个客户端的同时连接数限制为两个。如果是这种情况,那么前两个连接将成功,而第三个连接将挂起,直到前两个连接之一完成。听起来这可以解释你所看到的。

于 2013-04-05T19:54:27.053 回答