Je me demande s'il existe un type enum dans une bibliothèque de classes standard Java qui définit des constantes symboliques pour tous les codes de réponse HTTP valides. Il devrait prendre en charge la conversion vers/à partir des valeurs entières correspondantes.
Je débogue certains Java codes utilisant javax.ws.rs.core.Response.Status. Cela fonctionne, mais il ne définit qu'environ la moitié des codes de réponse HTTP valides.
Je ne pense pas qu'il en existe une qui soit complète dans les classes standard Java; HttpURLConnection
il manque beaucoup de codes, comme _HTTP 100/Continue
_.
Il existe une liste complète dans les composants Apache HttpComponents:org.Apache.http.HttpStatus
(remplacé org.Apache.commons.HttpClient.HttpStatus
de Apache Http Client, qui a atteint en fin de vie )
L'interface javax.servlet.http.HttpServletResponse
de l'API du servlet contient tous les codes de réponse sous la forme de int
nom de constantes SC_<description>
. Voir http://docs.Oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html
Eh bien, il y a des constantes statiques des valeurs entières exactes dans la classe HttpURLConnection
Si vous utilisez Spring, la version 3.x répond à vos attentes: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus. html
Si vous utilisez Netty , vous pouvez utiliser:
Utilisez la classe javax.servlet.http.HttpServletResponse
Exemple:
javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED //401
javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR //500
Tout le monde semble ignorer la partie "type énumération" de votre question.
Bien qu'il n'y ait pas de source canonique pour les codes d'état HTTP, il existe un moyen simple de add toutes les constantes d'état manquantes nécessaires à celles fournies par javax.ws.rs.core.Response.Status
sans ajouter de dépendances supplémentaires à votre projet.
javax.ws.rs.core.Response.Status
n'est qu'une implémentation de l'interface javax.ws.rs.core.Response.StatusType
. Vous devez simplement créer votre propre énumération d'implémentation avec les définitions des codes d'état souhaités.
Les bibliothèques de base comme Javax, Jersey, etc. sont écrites dans le interfaceStatusType
pas le implémentationStatus
(ou certainement devrait être). Comme votre nouvelle énumération de statut implémente StatusType
, vous pouvez l'utiliser n'importe où vous utiliseriez une constante javax.ws.rs.core.Response.Status
.
Rappelez-vous simplement que votre propre code doit également être écrit sur l'interface StatusType
. Cela vous permettra d’utiliser vos propres codes d’état en plus des codes "standard".
Voici un résumé avec une implémentation simple avec des constantes définies pour les codes d'état "Informationnel 1xx": https://Gist.github.com/avendasora/a5ed9acf6b1ee709a14a
1) Pour obtenir la raison du texte , si vous ne possédez que le code, vous pouvez utiliser:
org.Apache.http.impl.EnglishReasonPhraseCatalog.INSTANCE.getReason(httpCode,null)
Où httpCode
serait le code de raison que vous avez obtenu de la réponse HTTP.
Voir https://hc.Apache.org/httpcomponents-core-ga/httpcore/apidocs/org/Apache/http/impl/EnglishReasonPhraseCatalog.html pour plus de détails
2) Pour obtenir le code de la raison , si vous ne disposez que du texte, vous pouvez utiliser BasicHttpResponse
.
Voir ici pour plus de détails: https://hc.Apache.org/httpcomponents-core-ga/httpcore/apidocs/org/Apache/http/message/BasicHttpResponse.html
Consultez également la classe Restlet Status:
http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
Une autre option consiste à utiliser la classe HttpStatus
de Apache commons-httpclient, qui vous fournit les différents statuts Http en tant que constantes.
Le meilleur fournisseur de constantes de code de statut http est probablement la classe org.Eclipse.jetty.http.HttpStatus de Jetty pour les raisons suivantes:
La seule chose que je voudrais améliorer: placez le numéro de code de statut devant le texte descriptif afin de faciliter la recherche de complétion automatique lorsque vous commencez avec le code.