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. Debe admitir 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.
La interfaz
javax.servlet.http.HttpServletResponse
de la API de servlet tiene todos los códigos de respuesta en forma deint
nombres de constantesSC_<description>
. Ver http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.htmlfuente
Bueno, hay constantes estáticas de los valores enteros exactos en la clase HttpURLConnection
fuente
java.net.HttpURLConnection.HTTP_BAD_REQUEST
Si está utilizando Spring, la versión 3.x tiene lo que está buscando: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
fuente
HttpStatus.XXX.value()
para obtener int.Si está utilizando Netty , puede usar:
fuente
Todo el mundo parece ignorar la parte del "tipo de enumeración" de su pregunta.
Si bien no hay una fuente canónica para los códigos de estado HTTP, hay una manera simple de agregar las constantes de estado que faltan que necesita a las proporcionadas
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 lajavax.ws.rs.core.Response.StatusType
interfaz. Simplemente necesita crear su propia enumeración de implementación con definiciones para los códigos de estado que desee.Las bibliotecas principales como Javax, Jersey, etc. están escritas en la interfaz,
StatusType
no en la implementaciónStatus
(o ciertamente deberían estarlo). Dado que su nuevo estado enum implementaStatusType
se puede usar en cualquier lugar donde usaría unajavax.ws.rs.core.Response.Status
constante.Solo recuerde que su propio código también debe escribirse en la
StatusType
interfaz. Esto le permitirá usar sus propios códigos de estado junto con los "estándar".Aquí hay una idea básica con una implementación simple con constantes definidas para los códigos de estado "1xx informativo": https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a
fuente
Utilice la clase javax.servlet.http.HttpServletResponse
Ejemplo:
fuente
1) Para obtener el texto del motivo si solo tiene el código, puede usar:
¿Dónde
httpCode
estaría el código de razón que obtuvo de la respuesta HTTP?Ver 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 razón si solo tiene el texto, puede usarlo
BasicHttpResponse
.Ver aquí para más detalles: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html
fuente
Consulte también la clase de Estado de Restlet:
http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
fuente
Es probable que el mejor proveedor de constantes de código de estado http sea la clase org.eclipse.jetty.http.HttpStatus de Jetty porque:
Lo único que mejoraría: coloque el número del código de estado delante de la descripción del texto para que la búsqueda de autocompletado sea más conveniente cuando comience con el código.
fuente
Otra opción es usar la
HttpStatus
clase de Apache commons-httpclient que le proporciona los diversos estados Http como constantes.fuente