Если вы хотите минимизировать кодирование, вы можете получить быстрый HTTP-ответ от вашего сервера с помощью вызова метода, подобного этому:
NSURL* url = [NSURL URLWithString:@"http://mysite.com/my_page.html"];
NSStringEncoding encoding;
NSError* error = nil;
NSString* pageData = [NSString stringWithContentsOfURL:url
usedEncoding:&encoding error:&error];
// Now pageData is a string with the html from that URL, or error will indicate
// any network error that occurred.
NSData
имеет аналогичный метод, называемый dataWithContentsOfURL:options:error:
, который может обрабатывать получение двоичных данных с сервера. Оба эти подхода являются синхронными, то есть ваш код блокируется, пока он ожидает ответа от сервера - по крайней мере, пока не истечет время ожидания или не будет обнаружена ошибка.
Для асинхронной сетевой связи вы можете использовать другие методы в NSURLConnection
, который также работает с сопутствующими классами NSURLRequest
, NSURLResponse
и NSURL
. Самый быстрый способ узнать это - просмотреть NSURLConnection
документы . Вот пример кода того, как написать асинхронный HTTP get с использованием этих классов.
Я предполагаю, что вы имеете в виду, в основном, HTTP-трансферы, для которых вышеупомянутые классы могут обрабатывать
большинство взаимодействий, включая разные типы HTTP-запросов (например, post vs get), разные типы кодировки или двоичные данные, позволяющие вашему приложению обрабатывать каждый пакет по мере его поступления, переадресацию на перенаправления на уровне http, установку пользовательского таймаута и т. д.
Есть еще больше способов общения, например, использование Bonjour , которое помогает с настройками без сервера (например, два iPhone, использующие соединение Wi-Fi); или Game Kit , который может обрабатывать одноранговые соединения Bluetooth и поддерживает встроенную голосовую связь в игре.