2010-10-18 9 views
1

Je développe une application Java qui envoie une requête HTTP à un service Web et XML est renvoyé. Si le code de réponse est 200, une méthode de rappel requestSucceeded() enverra le code XML à un SAXParser avec un autre gestionnaire SAX, en fonction du service Web appelé. Si le code de réponse n'est pas 200, une méthode de rappel requestFailed() est appelée.Gestion de différents documents de réponse XML avec un gestionnaire SAX

Le service Web que j'appelle renvoie deux types de documents XML (avec un code de réponse de 200): un document XML contenant les informations de réponse réussies ou un document d'erreur XML contenant des informations d'erreur (par exemple des paramètres de la requête n'a pas été formaté correctement).

Ma question est la suivante: Compte tenu de ma configuration actuelle, quelle est la meilleure façon de rechercher/gérer les deux types de documents XML (une réponse XML réussie ou un document d'erreur XML)? Le SAX Handler recherche toutes les informations de réponse pertinentes et stocke ces informations dans un objet, qui est ensuite traité par mon application. Existe-t-il une meilleure solution que de toujours rechercher d'abord les balises d'erreur XML uniques?

Merci!

Répondre

1

Option 1 - Changer le code respose

Pourquoi vous renvoie une erreur avec le code de réponse 200? 400 (Bad Request) ou un autre code d'erreur pourrait être une meilleure option. Ensuite, vous pouvez traiter le code XML en fonction du code de réponse.

Option # 2 - contenu swap Handlers

est Ci-dessous un lien vers une de mes réponses précédentes où j'explique comment échanger des gestionnaires de contenu lors du traitement du document. Vous pouvez avoir un gestionnaire de contenu qui détermine si la réponse est un contenu ou une erreur, puis échanger dans le gestionnaire de contenu approprié pour traiter le reste.

Option # 3 - Utilisation JAXB

Si le résultat final est que le XML sera converti en un objet, avez-vous envisagé d'utiliser JAXB? Il va construire un objet basé sur le XML basé sur ce qui est retourné.

+0

L'option 2 est parfaite pour moi, merci! Malheureusement, je demande à partir d'un service web que je n'ai pas développé, donc je ne peux pas contrôler qu'il y ait un code de réponse de 200. Quant à l'option # 3, je n'ai jamais entendu parler de JAXB auparavant, mais cela semble vraiment utile. Je développe sur une plate-forme mobile qui ne le supportera pas, cependant. Je vais certainement utiliser cela pour quelque chose d'autre dans le futur, cependant. Merci beaucoup! – littleK