Je suis dans la situation où j'écris des pages d'erreur personnalisées pour une application Web (principalement pour réduire la divulgation d'informations à partir des pages d'erreur par défaut du conteneur de servlet). Puisque j'ai besoin d'une page d'erreur pour chaque code d'état d'erreur, je vais devoir avoir une réponse sensible pour chaque code. Autant que je sache, ces pages d'erreur ne doivent pas être particulièrement conviviales, mais simplement rediriger tout vers une seule page d'erreur «ça s'est mal passé» va rendre le diagnostic des problèmes très difficile. Je me demande donc s'il existe une bibliothèque Java qui fournit un bon mappage entre les codes d'état HTTP et une brève description compréhensible par l'homme (idéalement un résumé de 2 à 4 mots, à utiliser comme titre de page). , ainsi qu'un message de phrase 1-3 développant sur le résumé). Ensuite, je pourrais simplement l'utiliser dans un JSP pour fournir des commentaires sur la classe de l'erreur. Sinon, je suis sûr que je peux en écrire un moi-même, mais si des roues ont été inventées, je suis heureux de les utiliser.Bibliothèque Java pour mapper le code d'état HTTP à la description?
Répondre
Je me demande s'il y a une bibliothèque Java qui fournit une bonne cartographie entre les codes d'état HTTP et une brève la description lisible par l'homme d'entre eux (idéalement un 2-4 mot « résumé », pour utiliser en tant que titre de page, ainsi qu'un message de phrase 1-3 développant le résumé ).
Oui, Apache Commons HttpClient a cette fonctionnalité. La classe HttpStatus
a la même liste de constantes int
que vous trouverez ailleurs, mais elle a également une méthode static String getStatusText(int)
qui renvoie une description lisible par l'homme du code d'état.
Voici la dépendance Maven
:
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
Exemple Code:
import org.apache.commons.httpclient.HttpStatus;
String responseMessage = HttpStatus.getStatusText(HttpStatus.SC_OK);
System.out.println(responseMessage);
Prints:
OK
La classe abstraite 'HttpURLConnection' vous fournit des valeurs int constantes pour tous les codes d'état HTTP. Sa documentation a une description verbale courte pour chaque constante. Vous pourriez vous faire une simple énumération avec ces valeurs et ces chaînes, et l'utiliser.
Si vous utilisez Jersey (ou l'avez sur votre chemin de classe), l'énumération javax.ws.rs.core.Response.Status
inclut des "raisons" lisibles par l'utilisateur à partir de la spécification HTTP, par ex. Response.Status.fromStatusCode(404).toString()
donne "Not Found"
.
Pourquoi 'Response.Status.fromStatusCode (405)' renvoie-il 'null'? – Stefan
@Stefan: Je viens de passer un moment à me cogner la tête contre ça aussi. NOT_ALLOWED n'est simplement pas inclus dans Response.Status enum. Notez qu'il existe en fait une interface http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/Response.StatusType.html qui vous permet de créer vos propres types de statut. Utile, mais seulement si ce que vous utilisez pour accepter une instance StatusType plutôt qu'une instance Status ... – PapaFreud
@Stefan existe dans 'ClientResponse.Status' et dans' Responses.METHOD_NOT_ALLOWED_TYPE'. J'ai fini par créer ma propre liste. – GuiSim
Je pense que vous pourriez aimer la solution Spring: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
Peut-être la solution la plus simple est d'utiliser la fonction suivante:
httpResponse.getStatusLine().getReasonPhrase()
Il retourne exactement ce qui est nécessaire.
derniers composants http apache v4 + (httpCoponents)
aborde les sujets suivants: httpStatus comme ENUM contenant tous les httpStatuses
Pour leur utilisation description: EnglishReasonPhraseCatalog.INSTANCE.getReason (code, Locale. ANGLAIS);
Si votre code d'état == code, par exemple: 200
Par exemple:
HttpStatus.SC_FORBIDDEN == 403
EnglishReasonPhraseCatalog.INSTANCE.getReason(403, Locale.ENGLISH) == "Forbidden"
Vous pouvez utiliser mon HttpStatus JSP Tag Libray:
<%@ page isErrorPage="true" %>
<%@ taglib prefix="hs" uri="http://erik.thauvin.net/taglibs/httpstatus" %>
<html><head>
<title><hs:code/> <hs:reason default="Server Error"/></title>
</head>
<h1><hs:reason default="Server Error"/></h1>
Cause: <pre><hs:cause default="Unable to complete your request."/></pre>
Plus précisément, comme le montre l'exemple ci-dessus , la balise <hs:reason/>
est utilisée pour afficher l'expression de raison (description lisible par l'homme) pour le statut HTTP actuel code dans le titre de la page et le premier titre.
En outre, la balise <hs:code/>
est utilisée pour afficher le code d'état HTTP actuel et la balise <hs:cause/>
pour afficher le message de l'exception à l'origine de l'erreur.
S'il vous plaît entrer dans les détails pourquoi votre bibliothèque résout ce problème, en particulier. Chaque fois que vous publiez un extrait de code, cela aide à expliquer ce qu'il fait et pourquoi il résout le problème. –
- 1. Meilleure bibliothèque HTTP pour Java?
- 2. Bibliothèque Java pour le code embellir/format
- 3. Pseudo code pour la description de l'instruction
- 4. Ajouter une description aux colonnes en utilisant le code Java
- 5. bibliothèque Java pour l'analyse de code
- 6. Mapper la pile d'architecture Java à Microsoft
- 7. Java Obtenir le nom/la description des OID dans MIB
- 8. Gestion du serveur HTTP Apache via le code Java
- 9. Quelle est la meilleure bibliothèque Java à utiliser pour HTTP POST, GET etc?
- 10. Guide pour la bibliothèque de wrappers java http://www.ch-werner.de/javasqlite pour SQlite?
- 11. Bibliothèque BSON pour Java?
- 12. Rome Bibliothèque pour lire les flux Java
- 13. Bibliothèque pour écrire le code javascript
- 14. Bibliothèque Java pour mapper des paramètres de requête sur un objet
- 15. Existe-t-il une bibliothèque Java pour l'envoi de données binaires via HTTP, HTTP Tunneling?
- 16. Bibliothèque UPnP pour Java
- 17. Mapper en Java
- 18. OpenMicroBlogging-bibliothèque pour Java?
- 19. Bibliothèque PDF pour Java
- 20. Bibliothèque Python pour le support HTTP - y compris Content-Encoding
- 21. Modèles de conception pour le code indépendant de la bibliothèque
- 22. Bibliothèque Http complète
- 23. Bonne bibliothèque HTTP pour Objective-C/iPhone?
- 24. Bibliothèque RTSP pour Java
- 25. Bibliothèque Java pour la création de vidéos
- 26. Une bibliothèque HTTP fiable pour .Net 2.0
- 27. Configurer la bibliothèque d'entreprise dans le code
- 28. Java http corrompt le fichier
- 29. Code source des classes de la bibliothèque Java
- 30. Code canonique HTTP POST?
Quel jar dois-je ajouter au chemin de compilation pour utiliser cette méthode? J'ai ajouté tous et aucun d'eux ne fonctionne. –
Pour la version 4 de ce projet apache: httpComponents, regardez ma réponse ci-dessous – Chaiavi