usar new icon example codigo borderfactory java http

new - ¿Tiene Java una enumeración completa para los códigos de respuesta HTTP?



new icon java (11)

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.


1) Para obtener el texto del motivo, 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 razón que obtuvo de la respuesta HTTP.

Consulte https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/EnglishReasonPhraseCatalog.html para obtener detalles

2) Para obtener el código de razón si solo tiene el texto, puede usar BasicHttpResponse .

Consulte aquí para obtener más información: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html


Bueno, hay constantes estáticas de los valores enteros exactos en la clase HttpURLConnection


El mejor proveedor para las constantes de código de estado de http es probablemente la clase org.eclipse.jetty.http.HttpStatus de Jetty 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 es: coloque el número del código de estado delante de la descripción del texto para que la búsqueda de finalización automática sea más conveniente cuando comience con el código.



Otra opción es usar la clase HttpStatus de Apache commons-httpclient, que le proporciona los diversos estados de HTTP como constantes.





Todo el mundo parece estar ignorando 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, existe una forma sencilla de agregar las constantes de estado faltantes que necesita 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 las definiciones de los códigos de estado que desee.

Las bibliotecas principales como Javax, Jersey, etc. están escritas en la interfaz StatusType no en el Status implementación (o deberían serlo). Dado que su nueva enumeración de estado implementa StatusType se puede utilizar en cualquier lugar en el que use 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 idea general con una implementación simple con constantes definidas para los Códigos de estado "Informativo 1xx": https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a


Utilice la clase javax.servlet.http.HttpServletResponse

Ejemplo:

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