Objective-C: лучший способ получить доступ к REST API на вашем iphone - PullRequest
29 голосов
/ 13 октября 2009

боролся с этим в течение некоторого времени. Я пытаюсь получить доступ к API REST на моем iphone и наткнулся на структуру ASIHTTP, которая поможет мне. Так что я сделал что-то вроде

//call sites, so we can confirm username and password and site/sites
NSURL *url = [NSURL URLWithString: urlbase];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setUsername:@"doronkatz%40xx.com" ];
[request setPassword:@"xxx"];

Где urlbase - это URL-адрес сайта REST.

Теперь разработчик сказал мне, что может быть проблема или ошибка в этом фреймворке, и он неправильно передает заголовки. Есть ли другой способ проверки или доступа с проверкой подлинности к сетевому REST-местоположению?

Ответы [ 5 ]

31 голосов
/ 10 января 2011

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

10 голосов
/ 02 октября 2013

Я новичок в разработке для iOS, и я боролся с некоторыми из крупных фреймворков, перечисленных на этой странице в течение последнего месяца или около того. Это был кошмар. Я бы честно порекомендовал вам просто придерживаться основ и делать это самостоятельно, используя AFNetworking или собственный Apple NSURLConnection.

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

Это проще, чем вы думаете. Некоторые ресурсы, которые мне помогли:

Примеры только на домашней странице AFNetworking могут помочь вам в этом на 80%.

ОБНОВЛЕНИЕ : Mantle Framework (открытый источник от Github Inc.) хорошо разработан и прост в использовании. Он обрабатывает сопоставление объектов : преобразование JSON NSDictionary в ваши собственные классы моделей Objective-C. Он разумно обрабатывает случаи по умолчанию, и довольно легко свернуть ваши собственные преобразователи значений, например, от строки до NSURL или строки по вашему enum.

6 голосов
/ 13 октября 2009

У меня есть пара приложений, использующих инфраструктуру под названием Objective Resource , которая предоставляет оболочку для доступа к удаленным API на основе REST. Он предназначен в первую очередь для приложений на основе Ruby on Rails, поэтому его синтаксический анализ XML / JSON может быть настроен для обработки некоторых значений по умолчанию Rails, но на это стоит обратить внимание По умолчанию поддерживается базовая аутентификация http.

2 голосов
/ 23 августа 2010

Только что наткнулся на этот вопрос - вы можете найти LRResty довольно интересным, поскольку он использует NSOperation, блоки и т. Д., См .: GitHub для источника (лицензия MIT). Сейчас я экспериментирую с ним - у него тоже есть пример приложения.

1 голос
/ 13 октября 2009

Я использовал ASIHTTP в двух приложениях и без проблем.

Похоже, вы выполняете HTTP Basic Auth с удаленным сайтом. Попробуйте нажать тот же URL-адрес REST из стандартного браузера и передать ему нужные параметры. Он должен запросить у вас имя пользователя / пароль. Если это проходит, то, по крайней мере, вы знаете, что серверная часть настроена на обработку запросов. Если это не так, вам нужно поговорить с разработчиком.

Следующее, что нужно попробовать, - это установить сетевой сниффер на базе Mac и посмотреть, какие заголовки идут туда-сюда. Любой из HTTPScoop, Wireshark или Charles должен работать. Запустите сниффер в качестве сетевого прокси, затем запустите ваше приложение в симуляторе и посмотрите, что получится. Попробуйте еще раз с браузером. Как только вы увидите различия, вы можете использовать метод addRequestHeader в ASIHTTPRequest, чтобы добавить любые конкретные заголовки, ожидаемые сервером.

...