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.HttpServletResponsede la API de servlet tiene todos los códigos de respuesta en forma deintnombres 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_REQUESTSi 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.Statussin agregar dependencias adicionales a su proyecto.javax.ws.rs.core.Response.Statuses solo una implementación de lajavax.ws.rs.core.Response.StatusTypeinterfaz. 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,
StatusTypeno en la implementaciónStatus(o ciertamente deberían estarlo). Dado que su nuevo estado enum implementaStatusTypese puede usar en cualquier lugar donde usaría unajavax.ws.rs.core.Response.Statusconstante.Solo recuerde que su propio código también debe escribirse en la
StatusTypeinterfaz. 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
httpCodeestarí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
HttpStatusclase de Apache commons-httpclient que le proporciona los diversos estados Http como constantes.fuente