Ответ 1
Почему вы отменили соединение? В конце концов, 404 может также содержать контент. Просто не отменяйте его и позвольте программе вызывать следующий метод NSURLConnection для делегата.
Когда высылаются данные [тело контента] - (void)connection:(NSURLConnection *) didReceiveData:(NSData *)
, вам необходимо получить данные там. Прочитайте соответствующую часть в документах:
Ответ от сервера на запрос можно рассматривать как две части: метаданные, описывающие содержимое и данные контента URL. Метаданные, общие для большинства протоколов, инкапсулируются классом NSURLResponse и состоят из типа MIME, ожидаемой длины содержимого, текстового кодирования (где это применимо) и URL-адреса, предоставившего ответ.
Классы NSURLConnection и NSURLDownload предоставляют интерфейс для установления соединения, указанного объектом NSURLRequest, и загрузки содержимого. Объект NSURLConnection предоставляет данные делегату, поскольку он получен от исходного источника, тогда как объект NSURLDownload записывает данные запроса непосредственно на диск. Оба класса предоставляют обширную поддержку делегатов для реагирования на перенаправления, проблемы с проверкой подлинности и условия ошибки.
Как для примера реализации делегата:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData{
NSLog(@"String sent from server %@",[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]);
}