如何在注销过程中取消所有NSMUTABLELREQUEST



我正在使用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。

相关内容

  • 没有找到相关文章

最新更新