我正在使用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);
}
];
}
答案 0 :(得分:1)
我建议使用NSURLSession而不是NSURLConnection。它专为使这更容易而设计。创建单个会话,当用户注销时,在现有会话上调用invalidateAndCancel(然后在单独的会话中注销)。
实际上,此时基于NSURLConnection编写新代码的唯一有效理由是支持iOS 6及更早版本/ OS X v10.8及更早版本,以及听起来你正在编写新代码,所以...请使用更现代的API。