Java是否有HTTP响应代码的完整枚举?
我想知道是否有一个标准的Java类库中的枚举types,为所有有效的HTTP响应代码定义符号常量。 它应该支持转换到/从相应的整数值。
我正在debugging一些使用javax.ws.rs.core.Response.Status的Java代码。 它工作,但它只定义了大约有效的HTTP响应代码的一半。
我不认为在标准的Java类中有完整的东西, HttpURLConnection
丢失了很多代码,例如HTTP 100/Continue
。 在Apache Commons中有一个完整的列表: org.apache.commons.HttpClient.HttpStatus
。
更新: Apache Commons HttpClient是生命的终结 。 有关状态码的列表,请在Apache HttpComponents中使用org.apache.http.HttpStatus
。
来自servlet API的接口javax.servlet.http.HttpServletResponse
具有所有以int
常量名SC_<description>
forms的响应代码。 请参阅http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html
那么,在HttpURLConnection类中有确切的整数值的静态常量
如果你使用的是Spring,3.x版本有你想要的: http : //static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
使用javax.servlet.http.HttpServletResponse类
例:
javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED //401 javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR //500
如果你使用的是Netty ,你可以使用:
- io.netty.handler.codec.http。 HttpResponseStatus
每个人似乎都忽略了你的问题的“枚举types”部分。
虽然HTTP状态码没有规范的来源,但是有一种简单的方法可以将任何缺less的状态常量添加到javax.ws.rs.core.Response.Status
提供的那些状态常量中,而无需为项目添加任何附加依赖项。
javax.ws.rs.core.Response.Status
只是javax.ws.rs.core.Response.StatusType
接口的一个实现。 你只需要创build你自己的实现枚举的定义你想要的状态代码。
像Javax,Jersey等核心库被写入接口 StatusType
而不是执行 Status
(或者他们当然应该是)。 由于新的Status枚举实现了StatusType
因此可以在任何地方使用javax.ws.rs.core.Response.Status
常量。
只要记住你自己的代码也应该写入StatusType
接口。 这将使您能够使用您自己的“状态码”与“标准”码一起使用。
这里有一个简单的实现与定义为“信息1xx”状态代码常量的要点: https : //gist.github.com/avendasora/a5ed9acf6b1ee709a14a
1)要获得原因文本,如果您只有代码,您可以使用:
org.apache.http.impl.EnglishReasonPhraseCatalog.INSTANCE.getReason(httpCode,null)
httpCode
将成为您从HTTP响应中获得的原因代码。
2)如果只有文本,要获取原因码 ,可以使用BasicHttpResponse
。
详情请看这里: https : //hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html
http状态码常量的最佳提供者可能是Jetty的org.eclipse.jetty.http.HttpStatus类,因为:
- 在maven中有一个javadoc包,这对于search常量并且只知道数字很重要 – >打开api文档页面并search数字
- 常量包含状态码本身。
只有我会改进:将状态代码编号放在文本描述的前面,以便在开始编码时使自动完成查找更加顺畅。
另一种select是使用Apache commons-httpclient中的HttpStatus
类,它提供各种Http状态作为常量。