2009-03-10 2 views
22

Кто-нибудь знает, есть ли хорошая библиотека для iPhone SDK для вызова веб-службы REST. Я хочу иметь что-то простое, как Heroku rest clientКлиент iPhone REST


Thx всем за помощь.

Моя серверная часть находится на Rails, поэтому выглядит так, как будто ObjectiveResource лучше всего подходит мне.

ответ

4

В случае, если ваша служба REST реализована в Ruby on Rails, проект ObjectiveResource с открытым исходным кодом выглядит очень многообещающим. Он работал отлично для меня в относительно сложном проекте, и я даже внес какой-то код обратно к ним.

ObjectiveResource

+2

Проблема с ObjectiveResource заключается в отсутствии поддержки асинхронного подключения, что в основном означает замораживание потока пользовательского интерфейса при каждом вызове службы REST. Что недопустимо ИМХО. Я бы держался подальше от него. –

+1

Обратите внимание, что ObjectiveResource имеет легкую поддержку асинхронного подключения в ветви 1.1, предоставляемой классом ConnectionManager: http://github.com/yfactorial/objectiveresource/blob/1.1/Classes/lib/ConnectionManager.m –

-1

Использование служб на основе REST действительно не нуждается в «хорошей библиотеке».

NSURLConnection и NSURLRequest, включенные в SDK, все, что вам действительно нужно.

+1

Вы, безусловно, можете добиться того, чего хотите, используя базовые библиотеки в рамках, но это не значит, что нужно просто отказаться от простых API высокого уровня. –

+0

Август, я совершенно не согласен. Существует много кода, который вы должны писать между материалами NSURL и абстракцией REST. (NSURLConnection даже не накапливает байты в буфере, поскольку они выходят из сети, поэтому есть код шаблона, который вы должны писать каждый раз, когда используете его, и это только для начинающих.) – jasoncrawford

+2

Одно из реальных преимуществ использования приличного библиотека высокого уровня хранит весь код шаблона высокой четкости из вашей основной логики приложения. NSURL и NSURLConnection могут быть громоздкими, и как только вы начнете смотреть на производство, вам нужно будет продолжать синтаксический разбор и такой основной поток для производительности. Хорошие рамки упрощают эти общие задачи. –

28

Я предлагаю использовать отличный источник ASIHTTPRequest от Всевидящее Interactive: http://allseeing-i.com/ASIHTTPRequest. Я делаю это, и так несколько выпущенных приложений для iPhone, поэтому вы можете быть уверены, что код довольно прочный.

Это оболочка API CFNetwork, которая упрощает некоторые из более утомительных аспектов взаимодействия с веб-серверами. Он написан в Objective-C и работает как в приложениях Mac OS X, так и в iPhone.

Он подходит для выполнения основных HTTP-запросов и взаимодействия с службами на основе REST (GET/POST/PUT/DELETE). Подкласс ASIFormDataRequest упрощает отправку данных и файлов POST с использованием multipart/form-data.

+0

Помимо этого ответа, имеющего высокие показатели , просмотрите стенку ASI для выпущенных приложений, которые используют их фреймворк: http://allseeing-i.com/ASIHTTPRequest/Who-is-using-it Я только начал использовать его сегодня, и это довольно просто w/good docs, lotsa features , и минимальное кодирование из коробки./plug – jinglesthula

+0

@Blake - Кстати, я знаю только, потому что что-то популярное не означает, что это всегда лучшее решение. Я должен проверить реквизит. – jinglesthula

0

[akosma/iphonerestwrappert] попробовать эту обертку из GitHub

Caged/httpriot это очень простой HTTP Rest библиотека проектов iPhone и какао.

5

Взгляните на RestKit: http://restkit.org/ Он предоставляет превосходный API для доступа к веб-службам RESTful и представления удаленных ресурсов в качестве локальных объектов, включая их сохранение в Core Data. Он полностью асинхронен и обладает множеством других функций.

+0

Это то, что я пробовал на этой неделе, когда у меня была такая необходимость, но для чего это стоит, это не было хорошим решением для меня. Это очень «тяжело» и сложно даже вставать и работать - я потратил около четырех часов на это сейчас, и он все равно не будет компилироваться (используя последний XCode на 10.7.2). Ясно, что некоторые люди получили его на работу, и, возможно, после того, как вы преодолеете начальное препятствие, все в порядке, но для меня это просто не стоит того, - я хочу, чтобы кое-что представляло собой несколько исходных файлов, которые я могу зайти в свой проект, и сделать это с помощью Это. –

0

После использования сложных многословных и болезненных делегатов, которые вы должны были до iOS 4, мы перешли к использованию блоков для асинхронного поведения. это было действительно здорово и позволило нашему коду действительно быть читаемым в последнее время.

Мы открытым исходным кодом клиента отдыха, который мы использовали здесь:

https://github.com/jeremylightsmith/RestClient

Давайте нам знать, как это работает для вас.