309 votes

Java dispose-t-il d'un enum complet pour les codes de réponse HTTP ?

Je me demande s'il existe un type d'énumération dans une bibliothèque de classes Java standard qui définit des constantes symboliques pour tous les codes de réponse HTTP valides. Il devrait supporter la conversion vers/depuis les valeurs entières correspondantes.

Je suis en train de déboguer un code Java qui utilise javax.ws.rs.core.Response.Status . Cela fonctionne, mais ne définit qu'environ la moitié des codes de réponse HTTP valides.

323voto

John Feminella Points 116878

Je ne pense pas qu'il y en ait une qui soit complète dans les classes standard de Java ; HttpURLConnection Il manque pas mal de codes, comme HTTP 100/Continue .

Il y a une liste complète dans Apache HttpComponents, cependant :
org.apache.http.HttpStatus (remplacé org.apache.commons.HttpClient.HttpStatus depuis Apache Http Client, qui a atteint fin de vie )

6 votes

Il n'existe pas de "liste complète", car les codes d'état peuvent être étendus et le sont effectivement.

27 votes

@JulianReschke Je pense que "complet" ici devrait être pris dans le sens de "conforme à tous les codes décrits par la norme".

3 votes

John : "la norme" ne définit pas "tous" les codes d'état. C'est pourquoi il existe un registre.

81voto

David Rabinowitz Points 14133

L'interface javax.servlet.http.HttpServletResponse de l'API de la servlet a tous les codes de réponse sous la forme de int noms des constantes SC_<description> . Voir http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html

4 votes

HttpServletResponse supporte les normes RFC1945 et une partie de la RFC2616, mais il lui manque la totalité de la RFC2518. Si vous avez besoin d'une liste complète, voyez HttpStatus comme je l'ai mentionné.

2 votes

HttpServletResponse n'a pas non plus le code de réponse 418 défini dans le document RFC 2324

2 votes

L'utilisation de HttpServletResponse dans tout ce qui s'exécute en dehors d'une servlet est susceptible d'entraîner des problèmes de dépendance de diamant en raison du chevauchement de classes dans différents artefacts de servlet.

79voto

Mystic Points 1805

Eh bien, il y a des constantes statiques des valeurs entières exactes dans le fichier HttpURLConnection classe

13 votes

Thx ! cela fonctionne sans aucune dépendance externe. java.net.HttpURLConnection.HTTP_BAD_REQUEST

1 votes

C'est une bonne chose qu'elle fasse partie de la bibliothèque standard, mais malheureusement elle est incomplète - dans la gamme 400 par exemple, elle s'arrête à 415.

22voto

Ed J Points 347

Si vous utilisez Spring, la version 3.x contient ce que vous recherchez : http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html

4 votes

Je voudrais ajouter que Springs org.springframework.http.HttpStatus ( docs.spring.io/spring/docs/current/javadoc-api/org/ ), est le seul que j'ai pu trouver qui fournit une documentation Java avec des liens vers la liste complète des codes d'état et leur utilisation dans chaque enum. Si vous utilisez déjà Spring, c'est la bibliothèque à utiliser.

2 votes

Il a 100 et 418. Dommage que vous deviez appeler HttpStatus.XXX.value() pour obtenir l'int.

6voto

andrescanavesi Points 637

Utiliser la classe javax.servlet.http.HttpServletResponse

Exemple :

javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED //401
javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR //500

4 votes

Pour le développement de clients, il est fastidieux d'inclure l'ensemble de l'API des servlets juste pour récupérer ces codes.

1 votes

C'est peut-être un peu lourd dans certains cas mais j'ai trouvé cette bonne réponse et j'écris une application web basée sur des servlets donc ça me convient.

2 votes

Une réponse en double, postée plus de trois ans après ? Elle devrait être supprimée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X