Обработка NSURLRequest с тайм-аутом при использовании делегата - PullRequest
10 голосов
/ 10 августа 2009

Я использую NSMutableURLRequest для подключения к веб-сайту для получения ответа JSON. Я делаю это, генерируя запрос, а затем использую NSURLConnection с делегатом self для обработки асинхронного соединения. Я реализовал все обычные методы делегата:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

Все отлично работает с возвратом данных, устранением любых возникающих ошибок и т. Д. Однако с тайм-аутом NSURLRequest, установленным на 10 секунд, мне кажется, что в этих методах меня не вызывают (я ожидал, что didFailWithError будет вызываться ). Он просто сидит там навсегда, и у меня нет уведомления о том, что время истекло.

Чтение документации по iPhone API. Я не вижу упоминания о том, что должно произойти , когда истечет время ожидания, просто вы можете установить значение времени ожидания. Что должно произойти? Я не видел никаких других методов делегата в API, которые могли бы помочь. Я не должен вручную проверять время ожидания, не так ли? Таймауты только для синхронных запросов?

Ответы [ 5 ]

12 голосов
/ 10 августа 2009

Ваш тайм-аут получен в этом методе:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
4 голосов
/ 10 августа 2009

вы получите такой тип iofo:

не удалось с

ошибка: ошибка домена = NSURLErrorDomain код = -1001 UserInfo = 0xed4870 "тайм-аут"

3 голосов
/ 04 июня 2010

Время ожидания немного странное, см. эту тему на форумах разработчиков Apple.

2 голосов
/ 12 февраля 2015

Что я сделал, это было:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    if (error.code == -1001){
        [self showTimeoutAlert];//My method to show dialog with timeout message.
    } else {
        [self showInvalidURLAlert];//My method to show dialog with bad URL message.
    }
}

Как уже говорилось, -1001 для тайм-аута, в других тестах я получил -1003 (для плохого URL или отсутствия соединения).

Я стремился обработать тайм-аут, чтобы все остальное я считал плохим URL.

1 голос
/ 10 августа 2009

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

...