Je me demande s'il existe un type enum dans une bibliothèque de classes Java standard qui définit des constantes symboliques pour tous les codes de réponse HTTP valides. Il doit prendre en charge la conversion vers / à partir des valeurs entières correspondantes.
Je débogue du code Java qui utilise javax.ws.rs.core.Response.Status. Cela fonctionne, mais il ne définit qu'environ la moitié des codes de réponse HTTP valides.
L'interface
javax.servlet.http.HttpServletResponse
de l'API servlet a tous les codes de réponse sous la forme deint
noms de constantesSC_<description>
. Voir http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.htmlla source
Eh bien, il existe des constantes statiques des valeurs entières exactes dans la classe HttpURLConnection
la source
java.net.HttpURLConnection.HTTP_BAD_REQUEST
Si vous utilisez Spring, la version 3.x a ce que vous cherchez: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
la source
HttpStatus.XXX.value()
pour obtenir l'int.Si vous utilisez Netty , vous pouvez utiliser:
la source
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 d' ajouter les constantes d'état manquantes dont vous avez besoin à 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'javax.ws.rs.core.Response.StatusType
interface. Il vous suffit de créer votre propre énumération d'implémentation avec les définitions des codes d'état que vous souhaitez.Les bibliothèques de base comme Javax, Jersey, etc. sont écrites sur l' interface et
StatusType
non sur l' implémentationStatus
(ou elles devraient certainement l' être). Étant donné que votre nouvelle énumération d'état implémente,StatusType
elle peut être utilisée n'importe où vous utiliseriez unejavax.ws.rs.core.Response.Status
constante.N'oubliez pas que votre propre code doit également être écrit sur l'
StatusType
interface. Cela vous permettra d'utiliser à la fois vos propres codes de statut et ceux "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
la source
Utilisez la classe javax.servlet.http.HttpServletResponse
Exemple:
la source
1) Pour obtenir le texte du motif si vous ne disposez que du code, vous pouvez utiliser:
Où
httpCode
serait le code anomalie 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 anomalie 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
la source
Consultez également la classe Statut du Restlet:
http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
la source
Le meilleur fournisseur de constantes de code d'état http est probablement la classe org.eclipse.jetty.http.HttpStatus de Jetty car:
Seule chose que j'améliorerais: mettez le numéro de code de statut devant la description textuelle afin de rendre la recherche de complétion automatique plus pratique lorsque vous commencez avec le code.
la source
Une autre option consiste à utiliser la
HttpStatus
classe du Apons commons-httpclient qui vous fournit les différents statuts Http comme constantes.la source