2010-07-29 1 views
4

У меня есть приложение, которое использует ASI-HTTP-запрос для больших файлов, и недавно у меня был тестер, который заметил очень длинные задержки при загрузке, которые должны проявляться как таймауты. У меня есть методы делегирования, связанные с ошибками запроса, но похоже, что это не происходит.Какой метод делегата вызывается при истечении времени ожидания запроса ASI-HTTP?

Я налил их документацию, но не видел ничего конкретного.

ответ

9

В ASIHTTPRequest.m, смотрите в методе -checkRequestStatus.

При возникновении тайм-аута, запрос не с типом ASIRequestTimedOutError ошибки:

[self failWithError:ASIRequestTimedOutError]; 

Таким образом, вы должны быть в состоянии проверить ошибки, возвращаемый в -requestFailed: метод делегата:

- (void)requestFailed:(ASIHTTPRequest *)request { 
    NSLog(@"Error: %@",[[request error] localizedDescription]); 
} 

Это хорошая идея, чтобы прочитать источник, чтобы получить грубое чувство, как все работает. Документация отличная, но не всегда в синхронизации с исходным кодом.

+0

Спасибо. Не знаю много о самом HTTP ... Я бы спросил об этом ... если у меня есть файл размером 5 МБ, а мой тайм-аут запроса установлен на 10 секунд, а через 10 секунд он загружает только ... 3 МБ ... делает ли это тайм-аут? –

+2

Нет, таймаут начинается после того, как данные не вступают, между кусками. Если для загрузки 3 МБ требуется 10 секунд, а затем запрос ждет и ждет и ждет, и больше данных не поступает ... вот тогда начинается таймер таймаута. Таким образом, в этом примере это будет 20 секунд с момента начала запроса до ошибки таймаута. –

+0

Как тогда я могу сказать «хорошо, даже если данные поступают, это глупое долгое время» ... кроме создания моего собственного NSTimer ... что я могу сделать, просто интересно, ASI дает мне встроенную версию, в растворе. –