java – 如何干净地检查HTTP返回代码是在服务器端异常代码系列中

我正在使用Drop-wizard jersey客户端,它在内部使用apache http客户端,在我的场景中,如果服务器端有任何错误,即它返回5xx Server错误中的状态代码.

使用下面的代码我正在检查服务器是否返回5XX代码.

if (response.getStatus() / 100 == 5) {
        // do some work
}

类似的代码也存在于javax.ws.rs.core.Response类中,从那里复制到代码下面: –

            public static Family familyOf(final int statusCode) {
                switch (statusCode / 100) {
                    case 1:
                        return Family.INFORMATIONAL;
                    case 2:
                        return Family.SUCCESSFUL;
                    case 3:
                        return Family.REDIRECTION;
                    case 4:
                        return Family.CLIENT_ERROR;
                    case 5:
                        return Family.SERVER_ERROR;
                    default:
                        return Family.OTHER;
                }
            }
        } 

现在我的代码在checkstyle和PMD规则中失败了.说100和5是一个神奇的数字.

我不想比较每个服务器端异常代码在if条件下的返回状态代码,是否有任何其他更好的方法可用于检查返回代码是否在服务器错误族中.

解决方法:

找到解决方案: –

使用下面的代码,我们可以检查返回代码是否属于SERVER_ERROR代码.

response.getStatusInfo().getFamily() == Response.Status.Family.SERVER_ERROR
上一篇:java – jersey2单元测试,HttpServletRequest为null


下一篇:java – 如何在使用Jersey,jaxb和jax-rs时设置xml命名空间