我正在使用NSMutableURLRequest
向服务器提出HTTP请求。现在,由于网络速度慢,需要一些时间才能获得响应,而我想从应用程序中注销。由于在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);
}
];
}
编辑: -
What about AFNetworking ?
我建议使用nsurlsession而不是nsurlconnection。它专门为使其更容易。创建一个会话,当用户注销时,请在现有会话中调用InvalidateAteanDcancel(然后在单独的会话中注销)。
确实,此时基于NSURLConnection编写 new 编写代码的有效理由是为了支持iOS 6和更早的/OS x V10.8及以后听起来您正在编写新代码,所以...请使用更现代的API。