2010-10-18 2 views
1

Я разрабатываю приложение Java, которое делает HTTP-запрос к веб-службе, и возвращается XML. Если код ответа равен 200, метод обратного вызова requestSucceeded() отправит XML в SAXParser с другим обработчиком SAX, в зависимости от того, какой вызов веб-службы вызывается. Если код ответа не равен 200, тогда вызывается метод обратного вызова requestFailed().Обработка документов ответа XML с помощью одного обработчика SAX

Веб-сервис, который я вызываю, возвратит два типа XML-документов (с кодом ответа 200): XML-документ, содержащий успешную информацию об ответе, или документ с ошибкой XML, содержащий информацию об ошибке (например, если один параметров запроса не было отформатировано правильно).

Мой вопрос заключается в следующем: учитывая мою текущую настройку, как лучше всего искать/обрабатывать оба вида XML-документов (успешный ответ XML или документ с ошибкой XML)? Обработчик SAX ищет всю соответствующую информацию ответа и хранит эту информацию в объекте, который затем обрабатывается моим приложением. Есть ли лучшее решение, чем просто поиск вначале уникальных тегов ошибок XML?

Спасибо!

ответ

1

Вариант № 1 - Изменение откос Код

Почему вы возвращаетесь ошибкой с кодом ответа 200? 400 (Bad Request) или другой код ошибки может быть лучшим вариантом. Затем вы можете обрабатывать XML на основе кода ответа.

Вариант # 2 - Своп Content Обработчики

Ниже ссылка на один из моих предыдущих ответов, где я объясню, как поменять обработчик контента при обработке документа. У вас может быть один обработчик контента, который определяет, является ли ответ содержимым или ошибкой, а затем свопинг в соответствующем обработчике содержимого для обработки остального.

Вариант № 3 - Использование JAXB

Если конечный результат в том, что XML будет преобразован в объект, вы рассматривали использование JAXB? Он построит объект на основе XML на основе возвращаемого.

+0

Вариант № 2 идеально подходит для меня, спасибо! К сожалению, я запрашиваю у веб-службы, которую я не разрабатывал, поэтому я не могу контролировать, что ошибка имеет код ответа 200. Что касается опции № 3, я никогда раньше не слышал о JAXB, но это действительно полезно. Тем не менее, я развиваюсь на мобильной платформе, которая не поддерживает ее. Я определенно буду использовать это для чего-то еще в будущем. Спасибо! – littleK

Смежные вопросы