NSData / Получение контента со страницы - PullRequest
0 голосов
/ 27 июня 2011

У меня есть страница, которая отображает одну строку на пустой странице.Мне нужно получить эту строку.Как бы я это сделал, если бы хотел сделать это синхронно и асинхронно?(Я был бы признателен, если бы кто-нибудь дал мне имена методов для синхронизации и асинхронности).

Спасибо,

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Вы можете использовать метод NSString stringWithContentsOfURL:encoding:error: для синхронного получения HTML-страницы и последующего ее анализа с помощью NSXMLParser.

Поскольку stringWithContentsOfURL:encoding:error: является блокирующим вызовом, вы должны поместить его в метод и вызвать метод, используя performSelectorInBackground:withObject:. Это позволит получить страницу HTML в фоновом режиме.

Получив строку, создайте экземпляр NSXMLParser и получите строку. Это асинхронный процесс.

Несколько примеров использования NSXMLParser - Make NSXMLParser your friend и BNR - Parsing XML in Cocoa.

0 голосов
/ 27 июня 2011

Посмотрите ссылку NSURLConnection .Методы, которые вы хотите, есть.Кроме того, прочитайте Руководство по загрузке URL , в нем есть несколько примеров кода для синхронной и асинхронной загрузки.

Тело данных отклика будет строка, которую вы хотите.Вы должны быть немного осторожны в отношении того, какая кодировка использовалась веб-сайтом.Если он вообще не указан в ответе, это будет ISO-8859-1, в противном случае он, вероятно, будет указан в заголовке Content-Type ответа.Затем вам нужно преобразовать данные в строку NSString с помощью initWithData: encoding:

NB, если вы не в основном потоке, вы можете использовать stringWithContentsOfURL: usedEncoding: error: в NSStering.Вы не должны использовать это в основном потоке, потому что это синхронный метод.

...