Objective-C: la mejor forma de acceder a REST API en tu iphone



web-services (4)

estado luchando con esto por un tiempo. Estoy intentando acceder a una API REST en mi iPhone y encontré el marco ASIHTTP que me ayudaría. Entonces hice algo como

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

Donde urlbase es una URL para un sitio REST.

Ahora, un desarrollador me ha dicho que podría haber un problema o error en este marco y que no está pasando los encabezados correctamente. ¿Hay alguna otra forma de probar o acceder con autenticación a una ubicación de REST de red?


Acabo de tropezar con esta pregunta: puede encontrar LRResty bastante interesante ya que utiliza NSOperation, bloques, etc., ver: GitHub para fuente (licencia MIT). Estoy experimentando con esto ahora, también tiene una aplicación de muestra.


Recomendaría revisar RestKit: http://restkit.org/ Proporciona una excelente API para acceder a los servicios web RESTful y representar los recursos remotos como objetos locales, incluida la persistencia en Core Data. La autenticación HTTP se admite de forma inmediata.


Tengo un par de aplicaciones que usan un framework llamado Objective Resource que proporciona un contenedor para acceder a las API basadas en REST remotas. Está dirigido principalmente a aplicaciones basadas en Ruby on Rails, por lo que su análisis XML / JSON puede ajustarse para manejar algunos valores predeterminados de Rails, pero vale la pena analizarlo. Es compatible con la autenticación básica http de forma predeterminada.


ASIHTTP ahora, he usado ASIHTTP en dos aplicaciones y no he tenido problemas.

Parece que estás haciendo HTTP Basic Auth con el sitio remoto. Intente presionar la misma URL REST desde un navegador estándar y pase los parámetros que necesita. Debería pedirte un nombre de usuario / contraseña. Si lo hace, al menos sabrá que el lado del servidor está configurado para manejar las solicitudes. Si no es así, entonces necesita tener una conversación con el desarrollador.

Lo próximo que debe probar es poner un rastreador de red basado en Mac y ver qué encabezados van y vienen. Cualquiera de HTTPScoop, Wireshark o Charles debería funcionar. Ejecute el sniffer como un proxy de red, luego ejecute su aplicación en el simulador y observe lo que sucede. Inténtalo de nuevo con el navegador. Una vez que vea las diferencias, puede usar el método addRequestHeader en ASIHTTPRequest para agregar los encabezados específicos que el servidor espera.





rest