2013-04-05 36 views
0

我遇到了NSURLConnection的一個非常奇怪的問題。我有一個控制器,使用下面的函數使得viewDidLoad方法三種異步GET請求:在連續使用三個NSURLConnections導致第三個電話掛起

+ (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不會出現在第一個超時之前。更奇怪的是,在發生超時之後,如果我離開控制器並再次返回,則在重新啓動應用程序之前,問題不再可重現。

有沒有人有任何想法可能會導致此?

回答

3

某些服務器將限制從單個客戶端到兩個同時連接的數量。如果是這種情況,那麼前兩個連接將成功,第三個連接將掛起,直到前兩個連接完成。聽起來像這會解釋你所看到的。

+0

謝謝,這似乎是問題。它看起來像IIS有每個客戶端5個併發連接的限制。在導航到此控制器之前,我有一些其他連接正在觸發。 – lehn0058 2013-04-05 20:44:56