如何在注销期间取消所有NSMutableURLRequest?

时间:2016-06-23 15:52:29

标签: ios objective-c afnetworking nsurlconnection

我正在使用Given a function x Returns a function that: Given a function y Returns a function that: Given an integer z Returns x(y(z)) 向服务器发出HTTP请求。现在由于网络速度慢,需要一些时间来获得响应,我想从我的应用程序注销。由于在NSMutableURLRequest之前已经向服务器发送了多个请求,它将从服务器带来一些响应。我已经从应用程序退出,因此我logout想要don't want to process those response队列中的所有内容。

那么如何在注销后停止获取所有响应?我是否应该使用某个标记cancel all the pending request并检查它?

代码段: -

logout

编辑: -

+(void) httpRequestWithUrl:(NSString *)path onComplection:(RequestCompletionHandler)complect { NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:[NSURL URLWithString:path]]; [request setHTTPMethod:@"GET"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; NSOperationQueue *backgroundQueue = [[NSOperationQueue alloc]init]; [NSURLConnection sendAsynchronousRequest:request queue:backgroundQueue completionHandler:^(NSURLResponse *response,NSData *data,NSError *error){ NSString *result = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; if(complect) complect(result,error); } ]; }

1 个答案:

答案 0 :(得分:1)

我建议使用NSURLSession而不是NSURLConnection。它专为使这更容易而设计。创建单个会话,当用户注销时,在现有会话上调用invalidateAndCancel(然后在单独的会话中注销)。

实际上,此时基于NSURLConnection编写代码的唯一有效理由是支持iOS 6及更早版本/ OS X v10.8及更早版本,以及听起来你正在编写新代码,所以...请使用更现代的API。