Gostaria de saber se existe um tipo de enum em alguma biblioteca de classes Java padrão que define constantes simbólicas para todos os códigos de resposta HTTP válidos. Ele deve suportar a conversão de / para os valores inteiros correspondentes.
Estou depurando algum código Java que usa javax.ws.rs.core.Response.Status. Funciona, mas define apenas cerca de metade dos códigos de resposta HTTP válidos.
A interface
javax.servlet.http.HttpServletResponse
da API do servlet possui todos os códigos de resposta na forma deint
nomes de constantesSC_<description>
. Consulte http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.htmlfonte
Bem, existem constantes estáticas dos valores inteiros exatos na classe HttpURLConnection
fonte
java.net.HttpURLConnection.HTTP_BAD_REQUEST
Se você estiver usando o Spring, a versão 3.x tem o que você procura: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
fonte
HttpStatus.XXX.value()
para obter int.Se você estiver usando o Netty , poderá usar:
fonte
Todo mundo parece estar ignorando a parte "tipo de enum" da sua pergunta.
Embora não haja uma fonte canônica para códigos de status HTTP, existe uma maneira simples de adicionar as constantes de status ausentes às necessárias,
javax.ws.rs.core.Response.Status
sem incluir dependências adicionais em seu projeto.javax.ws.rs.core.Response.Status
é apenas uma implementação dojavax.ws.rs.core.Response.StatusType
interface. Você só precisa criar sua própria enumeração de implementação com definições para os códigos de status que deseja.Bibliotecas principais como Javax, Jersey etc. são gravadas na interface e
StatusType
não na implementaçãoStatus
(ou certamente deveriam ser). Como a sua nova enumeração de statusStatusType
é implementada, ela pode ser usada em qualquer lugar que você use umajavax.ws.rs.core.Response.Status
constante.Lembre-se de que seu próprio código também deve ser gravado na
StatusType
interface. Isso permitirá que você use seus próprios códigos de status, além dos códigos "padrão".Aqui está uma lista com uma implementação simples com constantes definidas para os códigos de status "Informativo 1xx": https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a
fonte
Use a classe javax.servlet.http.HttpServletResponse
Exemplo:
fonte
1) Para obter o texto do motivo , se você tiver apenas o código, você pode usar:
Onde
httpCode
estaria o código de razão que você obteve da resposta HTTP.Consulte https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/EnglishReasonPhraseCatalog.html para obter detalhes
2) Para obter o código de razão , se você tiver apenas o texto, você pode usar
BasicHttpResponse
.Veja aqui para detalhes: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html
fonte
Verifique também a classe Restlet Status:
http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
fonte
O melhor provedor para constantes do código de status http provavelmente é a classe org.eclipse.jetty.http.HttpStatus do Jetty porque:
A única coisa que eu melhoraria: coloque o número do código de status na frente da descrição do texto para tornar a pesquisa de preenchimento automático mais conveniente quando você iniciar o código.
fonte
Outra opção é usar a
HttpStatus
classe do Apache commons-httpclient, que fornece os vários status Http como constantes.fonte