Я загружаю файл (с Apache Tomcat 6.0.32).Когда я делаю отключение (shutdown tomcat) несколько раз, ASHITTPRequest генерирует ошибку, но иногда (в большинстве случаев точно ... ВСЕ ВРЕМЯ ТОЧНО! Только при отсутствии соединения в начале возникает ошибка) он завершает работу, как все правильно.
Таким образом, возникает вопрос: почему это произошло и как я могу наблюдать, если соединение потеряно правильно.
Большое спасибо!
ОБНОВЛЕНИЕ:
Попробуйте отправитьзапросите через TCPMon, затем остановите его (TCPMon) и получите то же самое: ASIHTTPRequest считает, что загрузка выполнена правильно.
ОБНОВЛЕНИЕ:
responseHeaders:
"Content-Disposition" = attachment;
"Content-Length" = 2277888;
"Content-Type" = "application/octet-stream";
Date = "Thu, 28 Apr 2011 12:35:32 GMT";
Server = "Apache-Coyote/1.1";
"Set-Cookie" = "JSESSIONID=98CAE6C0C4275B528D5E0F8651546AFE; Path=/ISED";
responseStatusMessage:
HTTP/1.1 200 OK
ОБНОВЛЕНИЕ:
Если отсоединить компьютер вручную (отсоединить кабель) и получить это:
Иногда ASIHTTPRequest ожидает истечения времени ожидания, а следующий запрос получает ошибку подключения.
Иногда возникает ошибка, когда я отключаюсь.
Иногда ошибка не возникает, когда я отключаюсь: процесс загрузки отсутствует и (еслиподключение снова), файл начинает загрузку с начала.
И если закрыть порт, ASIHTTPRequest считает, что загрузка успешно завершена.
Я не могу понять эту логику ...
РЕШЕНИЕ:
Я решаю проблему, сравнивая Content-Length в заголовке и общее количество прочитанных байтов:
NSString *contentLength = [[self.request responseHeaders] valueForKey:@"Content-Length"];
NSString *downloadedBytesCount = [NSString stringWithFormat:@"%llu",[self.request totalBytesRead]];
if ([contentLength isEqualToString:downloadedBytesCount] == NO) {
// error maintain
}
Итак, я могу проверить, все ли данные получены, а если нет: сохранить ошибку.В других случаях (например, отключение вручную) ASIHTTPRequest работает соответствующим образом и выдает ошибки самостоятельно.