2009-10-12 7 views
29

zmagał się z tym przez jakiś czas. Próbuję uzyskać dostęp do interfejsu API REST na moim iPhonie i natknąłem się na framework ASIHTTP, który mógłby mi pomóc. Więc zrobiłem coś podobnegoObjective-C: Najlepszy sposób uzyskania dostępu do REST API na twoim iPhone'ie

//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"]; 

Gdzie urlbase jest adres URL witryny REST.

Deweloper poinformował mnie, że może wystąpić problem lub błąd związany z tą strukturą i niepoprawne przekazywanie nagłówków. Czy istnieje inny sposób testowania lub uzyskiwania dostępu z uwierzytelnianiem do lokalizacji REST sieci?

+1

+1 W związku z tym pytaniem należy sformatować swój kod, tak aby SO mogło wyświetlić go poprawnie. Nie mogę edytować inaczej, ale wstawię 4 spacje przed każdą linią kodu i będzie wyglądać jak kod. –

+0

Przepraszam, mate źle, że w przyszłości – Doz

+0

http://github.com/sdegutis/CocoaREST – indragie

Odpowiedz

31

Polecam wypróbowanie RestKit: http://restkit.org/ Zapewnia doskonały interfejs API do uzyskiwania dostępu do usług sieci Web RESTful i reprezentowania zasobów zdalnych jako obiektów lokalnych, w tym utrzymywania ich na danych podstawowych. Uwierzytelnianie HTTP jest obsługiwane od razu po wyjęciu z pudełka.

+2

w 0.20.0 w jaki sposób przeprowadzane jest uwierzytelnianie podstawowe? Jedyne przykłady, jakie mogę znaleźć, odnoszą się do 'RKClient', ale zostało to usunięte w 0.20.0. Twoja pomoc jest bardzo doceniana. –

6

Mam kilka aplikacji korzystających z frameworka o nazwie Objective Resource, który zapewnia opakowanie do uzyskiwania dostępu do zdalnego interfejsu API opartego na REST. Jest skierowany przede wszystkim do aplikacji opartych na Ruby on Rails, więc można analizować XML/JSON, aby poradzić sobie z niektórymi wartościami Railsowymi, ale warto na nie patrzeć. Obsługuje domyślne uwierzytelnianie HTTP.

1

Użyłem dotychczas ASIHTTP w dwóch aplikacjach i nie miałem żadnych problemów.

Wygląda na to, że robisz HTTP Basic Auth z witryną zdalną. Spróbuj nacisnąć ten sam URL REST ze standardowej przeglądarki i przekazać wymagane parametry. Powinien wyświetlić monit o podanie nazwy użytkownika/hasła. Jeśli to się uda, to przynajmniej wiesz, że serwer jest skonfigurowany do obsługi żądań. Jeśli nie, musisz porozmawiać z deweloperem.

Następną rzeczą, którą należy wypróbować, jest umieszczenie sniffera sieciowego opartego na komputerze Mac i sprawdzenie, które nagłówki przechodzą w tę iz powrotem. Każdy z HTTPScoop, Wireshark lub Charles powinien działać. Uruchom sniffer jako proxy sieciowe, a następnie uruchom aplikację w symulatorze i obserwuj, co się dzieje. Spróbuj ponownie za pomocą przeglądarki. Gdy zauważysz różnice, możesz użyć metody addRequestHeader na ASIHTTPRequest, aby dodać konkretne nagłówki, których oczekuje serwer.

+0

Witaj, Ramin ive próbował użyć ASIHTTPRequest, nawet z api aplikacji Twitter, aby sprawdzić, czy mogę uzyskać nagłówek do pracy, używając addRequestHeader i używając HTTPScoop, ale nie pokazuje to, że nagłówki są do niego przekazywane. – Doz

+0

Jakich nagłówków szukasz? A kiedy klikniesz ten sam adres URL w przeglądarce, otrzymujesz to, czego szukasz w HTTPScoop? Jeśli pobierasz nagłówki z przeglądarki, ale nie w ASIHTTP, możesz przesłać raport o błędzie deweloperowi. – Ramin

+0

Cóż dla jednej z witryn, nad którymi pracuję, z HTTPSchool im otrzymuję odpowiedź wymagającą uwierzytelnienia. Dzięki serwisowi Twitter mogę umieścić nazwę użytkownika i hasło w pliku URL, ale kiedy umieściłem go jako addRequestHeader HTTPSchoop nie pokazuje, że wstawiłem nagłówki. To dlatego zastanawiam się, że coś musi być z ASIHTTP. – Doz

2

Natknęłam się na to pytanie - może się okazać, że LRResty jest całkiem interesujący, ponieważ używa NSOperation, bloków itp., Patrz: GitHub dla źródła (licencja MIT). Eksperymentuję z tym teraz - ma też przykładową aplikację.

10

Jestem nowy w rozwoju iOS i walczyłem z niektórymi dużymi frameworkami wymienionymi na tej stronie przez ostatni miesiąc. To był koszmar. Szczerze polecam po prostu trzymać się podstaw i zrobić to samemu, używając AFNetworking lub własnego Apple NSURLConnection.

Jedna z wymienionych bibliotek nie jest już obsługiwana. Inny przeszedł ostatnio ogromne zmiany w API, które zostały przełamane przez kod, a teraz połowa tutoriali opisujących jego użycie przestała działać. Inni są masowo wzdęci.

To łatwiejsze niż myślisz. Niektóre zasoby, które pomogły mi:

Przykłady na sam AFNetworking homepage może Ci 80% drogi tam.

AKTUALIZACJA: The Mantle Framework (open sourced by Github Inc.) jest dobrze zaprojektowana i łatwa w użyciu. Obsługuje mapowanie obiektów : konwertowanie JSON NSDictionary do własnych niestandardowych klas modelu Objective-C. Obsługuje domyślnie przypadki i całkiem łatwo jest przetoczyć własne transformatory wartości, np. od ciągu znaków do NSURL lub ciąg do niestandardowego enum.

Powiązane problemy