2012-08-24 12 views
5

Ich versuche, einen Web-Dienst zuzugreifen, über eine AFHTTPClient Unterklasse, die eine KomplikationAFNetworking AFHTTPClient Verschiedene Inhaltstypen für den Erfolg und Fail-

hat Wenn die Anforderung erfolgreich ist, wird der Inhalt als JSON zurückgegeben. Wenn es aus irgendeinem Grund fehlschlägt, wird der Fehler vom Server als XML zurückgegeben.

Im Moment ist die einzige Möglichkeit, wie ich damit umgehen kann, ist der Versuch, die spezifischen XML/JSON RequestOperations zu verwenden, alles rein als reine HTTP-Anfrage zu behandeln und dann selbst manuell zu analysieren, abhängig davon, wie die Antwort aussieht.

Leider habe ich keine Kontrolle über den Web-Service, oder ich würde sicherstellen, dass es alle JSON war.

Hat jemand bessere Vorschläge für den Umgang damit?

[EDIT]

Ich denke, eine Möglichkeit, es leicht zu machen cleaner wäre, eine neue Unterklasse von AFHTTPRequestOperation erstellen, dass der Nachweis von Inhalts intern Typ gehandhabt und übergeben dann entweder geparsten JSON- oder ein GDataXML Objekt wieder abhängig davon, was vom Server zurückgegeben wurde.

Dank

+0

Dies ist vergleichbar mit mehreren Web-Services, die ich verwendet habe, JSON auf Erfolg und Klartext auf Fehler. Das Beste, was Sie tun können, ist, einen Fehler auf einen anderen Inhaltstyp zu JSON zu werfen oder die Antwort für bestimmte Fehler zu analysieren und zu parsen. – danielbeard

Antwort

0

Dies könnte nicht die sauberste oder optimalste Lösung sein, aber man kann einen Scheck mit einer vorhandenen JSON-Bibliothek tun, dass die Antwort in der Tat gültig JSON ist. Wenn ja, gehe wie gewohnt vor; Wenn nicht, behandeln Sie es mit Ihrer handgeschnitzten Analyselösung.

+0

Danke. Ich dachte über diesen Ansatz nach, aber ich mochte die Idee des Overhead nicht, wenn ich versuchte, es zu parsen, nur um ein "Fail" zurück zu bekommen. Ich denke, das Parsen hat wahrscheinlich einen frühen Ausgang, wenn es Nicht-JSON entdeckt, also sollte es wahrscheinlich nicht zu ineffizient sein. –

Verwandte Themen