2017-05-19 28 views
1

我正在使用内部使用Apache HTTP客户端的Drop-wizard球衣客户端,并且在我的场景中,如果服务器端有任何错误,即它返回状态码在5xx服务器错误。如何干净地检查HTTP返回代码是否在服务器端异常代码系列

使用下面的代码我检查服务器是否返回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条件中的返回状态代码是否还有其他更好的方法可用,通过它我可以检查返回代码是否属于服务器错误。

回答

0

找到了解决办法: -

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

response.getStatusInfo().getFamily() == Response.Status.Family.SERVER_ERROR 
0

如果他们帮助,请尝试以下方法。

会喜欢第二个选项。

boolean a=((Integer)response.getStatus()).toString().startsWith("5"); 
a=(response.getStatus() >=500 && response.getStatus()<= 511); 
+0

根据checkstyle规则与数字比较会导致警告'正在使用幻数'。 –

+0

添加一个constanct然后使用它。 请看这里http://pmd.sourceforge.net/pmd-5.0.4/rules/java/controversial.html – gladiator

相关问题