2012-08-24 5 views
5

Próbuję uzyskać dostęp do usługi internetowej, za pośrednictwem podklasy AFHTTPClient, że ma powikłaniaAFNetworking AFHTTPClient typy różnej zawartości dla sukcesu i Fail

Jeżeli żądanie powiedzie, treść jest zwracana jako JSON. Jeśli z jakiegoś powodu zawiedzie, błąd z serwera zostanie zwrócony w formacie XML.

Obecnie jedynym sposobem mogę zrozumieć mogę sobie z tym jest nie próbować używać konkretnych RequestOperations XML/JSON i czysto traktować wszystko jako żądanie HTTP zwykłego, a następnie próbować je analizować ręcznie siebie, w zależności od tego, jak wygląda odpowiedź.

Niestety, nie mam kontroli nad serwisem internetowym lub upewniłem się, że jest to wszystkie JSON.

Czy ktoś ma lepsze sugestie dotyczące tego rozwiązania?

[Edycja]

Chyba jeden sposób wytwarzania nieznacznie czyszczenia byłoby stworzenie nowego podklasę AFHTTPRequestOperation, że obsługiwane wykrywania typów treści wewnętrznie, a następnie przechodzi z powrotem albo przeanalizowanych JSON lub obiektu GDataXML w zależności od tego, co zostało zwrócone z serwera.

Dzięki

+0

Jest to podobne do kilku usług internetowych, z których korzystałem, JSON w przypadku sukcesu i zwykły tekst w przypadku niepowodzenia. Najlepsze, co możesz zrobić, to albo zgłosić błąd dla innego typu zawartości do JSON albo spróbować przeanalizować odpowiedź na konkretne błędy. – danielbeard

Odpowiedz

0

To może nie być to najczystszy i najbardziej optymalne rozwiązanie, ale można zrobić test z istniejącej biblioteki JSON, że odpowiedź jest w istocie ważny JSON. Jeśli tak, postępuj jak zwykle; jeśli tak nie jest, potraktuj go ręcznie rzeźbionym roztworem do analizy.

+0

Dzięki. Zastanowiłem się nad tym podejściem, ale nie spodobał mi się pomysł, by spróbować go przetworzyć, żeby uzyskać "niepowodzenie". Sądzę, że parsowanie prawdopodobnie ma wcześnie, jeśli wykryje nie-JSON, więc prawdopodobnie nie powinno być zbyt nieefektywne. –

Powiązane problemy