2012-08-24 8 views
5

Estoy intentando acceder a un servicio web, a través de una subclase AFHTTPClient, que tiene una complicacióntipos de contenido diferente AFNetworking AFHTTPClient de éxito y falla

Si la solicitud se realiza correctamente, el contenido se devuelve como JSON. Si falla por alguna razón, el error del servidor se devuelve formateado como XML.

Por el momento, la única forma en que me imagino que puedo manejar esto es no intentar utilizar XML/JSON RequestOperations, y tratar todo como una simple solicitud HTTP, y luego intentar analizarlo manualmente, dependiendo de cómo se vea la respuesta.

Lamentablemente, no tengo control sobre el servicio web, o me aseguraría de que fuera todo JSON.

¿Alguien tiene alguna mejor sugerencia para manejar esto?

[EDIT]

supongo una forma de lo que es ligeramente más limpio, sería la creación de una nueva subclase de AFHTTPRequestOperation, que maneja la detección de tipo de contenido internamente, y luego se pasa de nuevo ya sea JSON analizar o un objeto GDataXML dependiendo de lo que devolvió el servidor.

Gracias

+0

Esto es similar a varios servicios web que he usado, JSON en caso de éxito y texto sin formato en caso de error. Lo mejor que puede hacer es arrojar un error en un tipo de contenido diferente a JSON o intentar analizar la respuesta de errores específicos. – danielbeard

Respuesta

0

Esto podría no ser la solución más limpia o más óptima, pero que podría ser un cheque con una biblioteca JSON existente que la respuesta es, de hecho, JSON válida. Si es así, proceda como siempre; si no es así, trátalo con tu solución de análisis grabada a mano.

+0

Gracias. Consideré ese enfoque, pero no me gustó la idea de la sobrecarga de intentar analizarlo solo para obtener un 'fracaso'. Supongo que el análisis probablemente tenga una salida anticipada si detecta que no es JSON, por lo que probablemente no sea demasiado ineficiente. –

Cuestiones relacionadas