使用本机Java检查4xx Http代码

Chr*_*oph 3 java http

我有一些java代码检查http响应.现在,我想检查客户端错误(4xx)系列的代码,我该怎么做?

int responseCode = ab.sendGetRequest(href);
Run Code Online (Sandbox Code Playgroud)

最简单的解决方案是:

if (400 <= responseCode && responseCode < 500 ){
   //...
}
Run Code Online (Sandbox Code Playgroud)

或者在编码惯例方面更好一点但是可读性大受欢迎:

if (HttpStatus.SC_BAD_REQUEST <= responseCode && 
    responseCode < HttpStatus.SC_INTERNAL_SERVER_ERROR)
Run Code Online (Sandbox Code Playgroud)

如何检查responseCode4xx家人不知何故像下面...

CLIENT_ERROR.contains(code)
Run Code Online (Sandbox Code Playgroud)

重要的是,我不想使用自定义解决方案(自己编写CLIENT_ERROR或检查范围,......).java中是否已存在用于此目的的相应类?

rgr*_*ski 12

如果使用 Spring,您可以简单地执行以下操作:

    HttpStatus.valueOf(statusCode).is4xxClientError()
Run Code Online (Sandbox Code Playgroud)

如果您需要任何额外的东西,您还可以查看is4xxClientError()实现


Chr*_*oph 8

我现在正在使用它javax.ws.rs.core.Response.Status.Family.谢谢@Kon的有用提示!

import javax.ws.rs.core.Response.Status.Family;

if (Family.familyOf(responseCode) == Family.CLIENT_ERROR) {
Run Code Online (Sandbox Code Playgroud)