когда код ответа получен во время запроса изображения с использованием ASIHTTPRequest? - PullRequest
1 голос
/ 16 мая 2011

Когда я получу код ответа 200 для действительного запроса изображения?Это после того, как все данные были загружены в мой браузер или какое-либо устройство запрашивает изображение?

Я использую библиотеку http://allseeing -i.com / ASIHTTPRequest / длязагрузите изображения в мое приложение для iPad и используйте загрузку непосредственно в файл, а затем удалите файл, если это была ошибка 404 или любой другой код состояния, кроме 200.

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadDestinationPath:@"/Users/ben/Desktop/my_file.jpg"];

Проблема в том, что частичные ответы кажутсясохраняются при медленных соединениях, поэтому я получаю пустые или поврежденные изображения.

Вместо этого я решил сохранить поток данных на диск только после того, как получил код состояния 200:

NSURL *url = [NSURL URLWithString: [[NSString stringWithFormat:kProductImagesURL, fileName] stringByAppendingString:tStamp]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setTimeOutSeconds:10];
[request startSynchronous];

int statusCode = [request responseStatusCode];
 if (statusCode==200) {
     NSData *responseData = [request responseData];
     [responseData writeToFile:[savePath stringByReplacingOccurrencesOfString:@"%20" withString:@" "] atomically:YES];
    }

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

1 Ответ

1 голос
/ 16 мая 2011

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

Во-вторых, он дает вам обратные вызовы, которые только происходяткак только весь запрос закончен.Я не могу объяснить, только получив частичные данные с кодом, который вы показали, но у меня никогда не было этой проблемы с использованием асинхронных методов ASI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...