Почему вы отменяете соединение? В конце концов, 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]);
}