2008-12-26 3 views
4

Я пишу приложение для какао, в котором я хочу загрузить файл с веб-сервера. Каким будет самый удобный способ сделать это? Должен ли я использовать NSSockets или NSUrlRequest? Или есть ли другой более простой способ достичь этого?Доступ к веб-серверу из приложения какао

ответ

1

Простейшей задачей, вероятно, является использование NSURLDownload с NSURLRequest.

5

Если вы хотите загрузить содержимое файла в память, многие классы данных Cocoa, такие как NSString, NSData и даже NSDictionary, имеют методы initWithURL:, которые инициализируются непосредственно содержимым веб-запроса. Они очень просты в использовании, но они не очень гибкие или обеспечивают хорошую обработку ошибок. NSURLConnection обеспечивает более гибкий способ загрузки данных, если вам это нужно.

Если вы хотите скачать файл прямо на диск, то NSURLDownload будет лучшим выбором.

2

Предупреждение: методы initWithURL: блокируются, что является большой проблемой, если файл большой, сервер медленный, интернет-соединение пользователя происходит медленно и т. Д. Не вызывайте их из основного потока ,

У вас также нет сообщений о проделанной работе, поэтому , когда загружается медленно, у вас нет способа рассказать пользователю, как далеко он продвинулся или насколько дольше он будет длиться.

В большинстве случаев вы должны использовать NSURLDownload или NSURLConnection.

0

И еще один способ использования libcurl, который поставляется с предустановленной системой любой OS X. Вы должны убедиться, что системные настройки, такие как прокси и т. Д., Соблюдаются, хотя, если вы используете этот подход.

1

NSURLConnection хорошо, если вы хотите получить данные из веб-службы в NSString или NSData. Убедитесь, что вы делаете асинхронные вызовы и обработки ошибок и данные в методах NSURLConnection

Вот хороший пример для REST-стиля называет http://kosmaczewski.net/2008/03/26/playing-with-http-libraries/

1

NSURLConnection дает вам большую детализацию, но будьте осторожны с sendSynchronousRequest NSURLConnection (в) метод. It leaks memory each time (приложите инструмент XCode Leak Instrumentation и запустите его, чтобы доказать это самому себе) и дает странные ответы HTTP 204 без всякой причины. I've blogged about this here

Смежные вопросы