2014-07-17 83 views
4

我想添加在用戶離開視圖或他們發起新請求時取消所有當前異步請求的功能。我知道在哪裏放置代碼,但我不太清楚如何實際取消請求。從我的研究中,我知道NSURLConnection有一個cancel方法,但我使用異步塊調用我的請求。以下是我的代碼 - 非常感謝任何幫助!如何在Objective-C中取消異步HTTP請求?

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setHTTPMethod:@"GET"]; 
[request setURL:[NSURL URLWithString:[kEndpointEvents stringByAppendingString:arguments]]]; 

//Send an asynchronous request so it doesn't pause the main thread 
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

    NSHTTPURLResponse *responseCode = (NSHTTPURLResponse *)response; 

    //Do stuff 

}]; 

回答

1

它不可能取消正在進行的請求,利用方便的方法+sendAsynchronousRequest:queue:completionHandler+sendSynchronousRequest:returningResponse:error:時。

如果要取消,請在代理NSURLConnectionDataDelegate中實施方法,然後從回調中自行構建數據。這樣做會讓您控制連接對象,並且您可以隨時調用-cancel

+0

你有圖書館,教程或例子嗎? – rebello95

+1

Checkout https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html,http://stackoverflow.com/questions/9577317/nsurlconnection-delegate-method,http: //codewithchris.com/tutorial-how-to-use-ios-nsurlconnection-by-example/ – Anurag

+1

只是FYI給其他人疑惑:做了一些研究之後,我最終使用了AFNetworking庫。這是一個非常好的設計和最新的庫,允許連接取消等等。 – rebello95