Какой самый быстрый способ получить содержимое строки URL-адреса с помощью Cocoa / iPhoneSDK? - PullRequest
3 голосов
/ 28 октября 2008

Скажите, что я хочу получить HTML

http://www.google.com

как строка, использующая некоторые встроенные классы платформы Cocoa Touch.

Какой минимальный объем кода мне нужно написать?

Я зашел так далеко, но не могу понять, как прогрессировать. Должен быть более простой способ.

CFHTTPMessageRef req;
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
req = CFHTTPMessageCreateRequest(kCFAllocatorDefault,
                                 CFSTR("GET"),
                                 (CFURLRef)url,
                                 kCFHTTPVersion1_1);

Ответы [ 2 ]

9 голосов
/ 28 октября 2008

Самый быстрый способ заключается в использовании метода +stringWithContentsOfURL: NSString. Однако это модальный вызов, и ваше приложение не будет отвечать на запросы во время работы. Вы можете переместить его в фоновый поток или использовать класс NSURLConnection для создания правильного асинхронного запроса.

5 голосов
/ 28 октября 2008

Один из способов сделать это заключается в следующем, однако, как указывает Бен Готлиб , это синхронный запрос и вызовет выполнение вашей программы в ожидании возврата этого вызова функции, что может сделать ваше приложение -responsive.

NSURL *url = [ NSURL URLWithString: @"http://www.google.com"]; 
NSURLRequest *req = [ NSURLRequest requestWithURL:url
                                      cachePolicy:NSURLRequestReloadIgnoringCacheData
                                  timeoutInterval:30.0 ];
NSError *err;
NSURLResponse *res;
NSData *d = [ NSURLConnection sendSynchronousRequest:req
                                   returningResponse:&res
                                               error:&err ];

Вы можете найти информацию о написании подходящих методов делегата для обработки асинхронного соединения здесь в Apple dev-docs.

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