У меня есть запрос на соединение, использующий метод stringWithContentsOfURL: encoding: error: from NSString. Я хочу, чтобы у меня была возможность повторить соединение, если оно не выполнено в первый раз. Я собирался переписать функцию, чтобы использовать функции тайм-аута NSURLRequest, но я думаю, что мне бы очень хотелось использовать несколько попыток до отказа.Принятый метод повторного запроса URL-адреса в Objective-C?
Помимо выполнения чего-то грубого, как контр-контур, есть ли принятый способ в Objective-C повторить попытку URL-адреса для данных?
EDIT: Хорошо, я внедрил NSURLConnection, чтобы получить данные, которые меня интересуют, и добавил некоторые рудиментарные обработки ошибок, используя NSError. Вот мой начальный удар в этом:
- (id)initWithURL:(NSURL*)aURL {
NSError *error = nil;
NSURLResponse *response = nil;
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:aURL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *xmlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (response == nil) {
if (error) {
NSLog(@"Error has occurred: %@", [error localizedDescription]);
}
}
}
Примечание: Я не реализована стратегия на провал еще изящно, я просто протоколирование ошибку сейчас.
Используя этот код (или любые предлагаемые улучшения), какой был бы лучший способ реализации стратегии повтора здесь?
Хотя я не думаю, что это ответ на вопрос, это хорошо для начала. – Joost
Я собираюсь использовать NSURLConnection и использовать NSError, чтобы узнать причину, почему операция может быть неудачной. Как насчет сценария повторных попыток? Существуют ли обычно используемые шаблоны для повторного подключения? –