Пример асинхронного запроса

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http:///];
NSURLRequest *req = [[NSURLRequest alloc]initWithURL:url];
NSURLConnection *con = [[NSURLConnection alloc]initWithRequest:req delegate:self startImmediately:YES];

В моем проекте я использовал sendSynchronousRequest на NSURLConnection. Иногда это приводит к сбою.

Поэтому я конвертирую этот код в AsynchronousRequest. Я не смог найти подходящий код.

Кто-нибудь дает мне ссылку или код, подходящий для моего кода. Любой hep будет оценен.

Ответ 1

Есть несколько вещей, которые вы могли бы сделать.

  • Вы можете использовать sendAsynchronousRequest и обрабатывать блок обратного вызова.
  • Вы можете использовать библиотеку AFNetworking, которая обрабатывает все ваши запросы асинхронным способом. Очень прост в использовании и настройке.

Код для опции 1:

NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
  if (error) {
    //NSLog(@"Error,%@", [error localizedDescription]);
  }
  else {
    //NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]);
  }
}];

Код для опции 2:

Возможно, вы захотите загрузить библиотеку и сначала включить ее в свой проект. Затем сделайте следующее. Вы можете следить за сообщением о настройке здесь

NSURL *url = [NSURL URLWithString:@"http://httpbin.org/ip"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
    NSLog(@"IP Address: %@", [JSON valueForKeyPath:@"origin"]);
} failure:nil];

[operation start];