¿Java tiene una enumeración completa para los códigos de respuesta HTTP?
Me pregunto si hay un tipo de enumeración en alguna biblioteca de clases Java estándar que defina constantes simbólicas para todos los códigos de respuesta HTTP válidos. Debería soportar la conversión a / desde los valores enteros correspondientes.
Estoy depurando un código Java que usa javax.ws.rs.core.Response.Status. Funciona, pero solo define aproximadamente la mitad de los códigos de respuesta HTTP válidos.
11 answers
No creo que haya uno que esté completo en las clases estándar de Java; HttpURLConnection
le faltan bastantes códigos, como HTTP 100/Continue
. Sin embargo, hay una lista completa en Apache Commons: org.apache.commons.HttpClient.HttpStatus
.
Actualización: Apache Commons HttpClient is end of life . Para obtener una lista de códigos de estado, utilice org.apache.http.HttpStatus
en Apache HttpComponents.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-02 20:37:51
La Interfaz javax.servlet.http.HttpServletResponse
de la API servlet tiene todos los códigos de respuesta en forma de int
nombres de constantes SC_<description>
. Véase http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-01 10:42:52
Bueno, hay constantes estáticas de los valores enteros exactos en la clase HttpURLConnection
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-08 14:41:50
Si estás usando Spring, el 3.x release tiene lo que buscas: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-26 00:27:22
Use javax.servlet.http.HttpServletResponse class
Ejemplo:
javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED //401
javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR //500
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-05 14:50:56
Si estás usando Netty , puedes usar:
- io.netty.handler.codec.http.HttpResponseStatus
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-27 18:24:48
Todo el mundo parece estar ignorando la parte "tipo enumeración" de su pregunta.
Si bien no hay una fuente canónica para los códigos de estado HTTP, existe una forma sencilla de agregar cualquier constante de Estado faltante que necesite a las proporcionadas por javax.ws.rs.core.Response.Status
sin agregar dependencias adicionales a su proyecto.
javax.ws.rs.core.Response.Status
es solo una implementación de la interfaz javax.ws.rs.core.Response.StatusType
. Simplemente necesita crear su propia enumeración de implementación con definiciones para los Códigos de estado que desea.
Bibliotecas básicas como Javax, Jersey, etc. se escriben en la interfaz StatusType
no la aplicación Status
(o ciertamente deberían ser). Dado que su nueva enumeración de estado implementa StatusType
se puede usar en cualquier lugar que usaría una constante javax.ws.rs.core.Response.Status
.
Solo recuerde que su propio código también debe escribirse en la interfaz StatusType
. Esto le permitirá utilizar sus propios códigos de estado junto con los" estándar".
Aquí hay una esencia con una implementación simple con constantes definidas para los códigos de estado" Informational 1xx": https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-05 16:25:01
También echa un vistazo a la clase de estado Restlet:
Http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-08 17:54:14
1) Para obtener la razón texto si solo tiene el código, puede usar:
org.apache.http.impl.EnglishReasonPhraseCatalog.INSTANCE.getReason(httpCode,null)
Donde httpCode
sería el código de denegación que obtuviste de la respuesta HTTP.
Véase https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/EnglishReasonPhraseCatalog.html para más detalles
2) Para obtener el código de la razón si solo tiene el texto, puede usar BasicHttpResponse
.
Vea aquí para más detalles: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-24 20:25:31
Es probable que el mejor proveedor para constantes de código de estado http sea la organización de Jetty.eclipsar.embarcadero.http.Clase HttpStatus porque:
- hay un paquete javadoc en maven que es importante si busca la constante y solo conoce el número -> simplemente abra la página api docs y busque el número
- las constantes contienen el número de código de estado en sí.
Lo único que mejoraría: poner el número de código de estado delante de la descripción del texto con el fin de hacer búsqueda de autocompletado más conveniente cuando se está comenzando con el código.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-19 22:11:54
Otra opción es usar la clase HttpStatus
del Apache commons-httpclient que le proporciona los diversos estados Http como constantes.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-11 15:27:09