Я отправляю запрос с данными POST на веб-сервер. Веб-сервер возвращается с ответом JSON в случае ошибки или самих файлов данных, если ошибок нет.Отслеживание загрузки ответа на запрос ASIFormDataRequest
Я хотел бы отслеживать ход ответа на данные файла. Мой код основан на коде образца из ASIHttpRequest Tutorial
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:someValue forKey:@"someKey"];
[request setPostValue:someOtherValue forKey:@"someOtherKey"];
[request setShowAccurateProgress:YES];
[request setDownloadProgressDelegate:aProgressView];
request.delegate = self;
[request startSynchronous];
Ничего не происходит до полного ответа не существует, и в этом случае индикатор заполняется полностью.
Я экспериментировал как с синхронными, так и с асинхронными запросами.
Я полагаю, что делегат процесса загрузки не работает, потому что я не загружаю файл как таковой, а просто получаю ответ HTTP на запрос, верно? Каким будет правильный подход для отслеживания прогресса в этом случае?
Заранее спасибо ...
Это была моя первая идея, но и запросы async и sync приводят к аналогичному поведению. даже во время асинхронного запроса метод updateProgress никогда не вызывается до тех пор, пока весь ответ не будет получен. –
Другая возможность была бы, если сервер не возвращает заголовок Content-Length: тогда ASIHTTPRequest не имеет способа узнать, что такое общий размер загрузки, поэтому не может сообщить процент завершения. Там также известна ошибка в apache, когда она может сообщать о неправильном размере для сжатых ответов, поэтому ASIHTTPRequest отключает отчет о ходе работы в этом случае. Если вы добавите полные заголовки ответа HTTP от ответа в свой вопрос, который может сделать возможным диагностировать. – JosephH
Большое спасибо Джозефу. Content-Length не был установлен действительно. Серверные ребята исправили его, и он работает так, как ожидалось сейчас! –