Définissant à la fois de message d'erreur et le corps de la servlet

Je veux écrire une servlet qui sera de retour une réponse http:

HTTP/1.1 500 <short custom message>
Content-Length: ...

<longer custom message>

La raison est que je veux de programmation client pour être en mesure de traiter le message de réponse à une réponse, mais je tiens également à remplir le corps de la réponse avec une explication plus longue, de sorte qu'il est facile de frapper à l'aide d'un navigateur.

Maintenant, HttpServletResponse a un sendError(int, String) méthode qui me permet de spécifier le code d'erreur et un message. La javadoc seulement dire que le message sera intégré dans une page html, mais rien de plus sur le message de réponse http. Après l'appel de cette méthode, vous n'êtes pas autorisé à écrire quoi que ce soit d'autre à la réponse. Dans mes tests (avec jetty), le message est utilisé à la fois pour la réponse http et html du corps, ce qui serait bien avec moi, sauf que je tiens à préciser deux chaînes et je ne pense pas que le paramètre du message de réponse http est garanti grâce à une mise en œuvre différente.

Il y a aussi un setStatus(int) méthode que vous pouvez appeler avec le code, et ensuite vous pouvez écrire votre propre code html de corps. C'est très proche, sauf que vous ne pouvez pas spécifier le message de réponse http.

Enfin, il y a un setStatus(int, String) méthode qui fait exactement ce que je veux, mais c'est déconseillé en raison d'une sorte d'ambiguïté. Je suis en supposant que certains conteneurs de servlet ont écrit le message pour le corps de la réponse et de la fermeture de la réponse.

À part en utilisant la méthode dépréciée, je suis en supposant que je suis vissé ici, mais je suis curieux de savoir si quelqu'un d'autre connaît toutes les astuces?

OriginalL'auteur Jeremy Huiskamp | 2010-10-07