#android #xml #json
#Android #xml #json
Вопрос:
Мне нужно проанализировать ответ сервера из моего http post amp; puts. Изначально я думал, что все ответы будут XML. Теперь я выясняю, что для определенных вызовов ответ, который я получаю, — это JSON. У меня нет контроля над сервером, поэтому изменение этого не вариант.
Итак, мне нужно решить, как наилучшим образом определить тип данных, возвращаемый с сервера. Моей первой мыслью было бы попытаться проанализировать ответ как JSON. Если генерируется исключение JSONException, предположим, что это XML.
Поскольку у меня нет контроля над сервером, я не уверен, что могу рассчитывать на правильность заголовков.
У кого-нибудь есть какие-либо мысли о наилучшем подходе?
Комментарии:
1. Если вы настроены на использование синтаксического анализатора JSON, включенного в Android, вам все равно придется вызывать EntityUtils#toString(Entity) или что-то подобное, поэтому достаточно просто отбросить все, что возвращает #toString(Entity), в новый JSONObject(String) и попробовать XML, если синтаксический анализ ответа завершается неудачно.
2. JSON всегда начинается с ‘{‘, а XML с ‘<‘?
3. и, возможно, некоторые пробелы в зависимости от того, насколько ненадежен сервер, производящий вывод.
Ответ №1:
Просто посмотрите на заголовок content-type в ответе html. Если сервер работает правильно, это должно указывать на желаемый тип контента, который вы получаете.
Комментарии:
1. Избиратель, не хотите прокомментировать? Чего мне здесь не хватает? Что-то не так с моим ответом?
Ответ №2:
Как я уже указывал в своем вопросе, я не имел никакого контроля над сервером и не мог рассчитывать на его правильную настройку и / или передачу соответствующих заголовков. В противном случае это был бы очевидный ответ.
Моя первоначальная идея — это то, что в итоге сработало лучше всего:
«Моей первой мыслью было бы попытаться проанализировать ответ как JSON. Если генерируется исключение JSONException, предположим, что это XML. »