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

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?

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.

Soy nuevo en el desarrollo de iOS y he estado batallando con algunos de los grandes frameworks listados en esta página durante el último mes. Ha sido una pesadilla. Honestamente, te recomiendo que te AFNetworking a lo básico y lo hagas tú mismo usando AFNetworking o el propio NSURLConnection Apple.

Una de las bibliotecas enumeradas ya no se mantiene. Otro sufrió cambios enormes en la API de descifrado recientemente y ahora la mitad de los tutoriales que describen su uso ya no funcionan. Otros están masivamente hinchados.

Es más fácil de lo que piensas Algunos recursos que me ayudaron:

Los ejemplos en la página de inicio de AFNetworking pueden obtener el 80% del camino hasta allí.

ACTUALIZACIÓN : El marco de Mantle (abierto por Github Inc.) está bien diseñado y es fácil de usar. Maneja el mapeo de objetos : convierte un NSDictionary JSON en sus propias clases de modelos de Objective-C. Maneja los casos predeterminados de forma sensata y es muy fácil NSURL sus propios transformadores de valor, por ejemplo, de cadena a NSURL o de cadena a su enum personalizada.

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.

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.

Hasta 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.