Ответ 1
Ваш тайм-аут получен в этом методе:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
Я использую 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 будет вызван). Он просто сидит там навсегда, и у меня нет уведомления о том, что он приурочен.
Чтение документов API iPhone API Я не вижу упоминания о том, что должно произойти, когда происходит тайм-аут, просто вы можете установить значение таймаута. Что должно произойти? Я не видел никаких других методов делегатов в API, которые бы помогли. Мне не нужно вручную проверять таймауты, не так ли? Являются ли тайм-ауты только для синхронных запросов?
Ваш тайм-аут получен в этом методе:
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
u будет получать такой тип iofo:
В этом случае с
error: Error Domain = NSURLErrorDomain Code = -1001 UserInfo = 0xed4870 "тайм-аут"
Поведение тайм-аута немного странно, см. этот поток на форумах разработчиков яблок.
Поместите несколько операторов журнала в каждый метод и проверьте, что они дают. Всякий раз, когда он истекает, вы определенно получаете уведомление на консоли о тайм-ауте. Я получаю это уведомление. Проверьте свой код, и если у вас все еще есть проблемы, сообщите нам.
Я сделал это:
- (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.