2017-05-19 1 views
1

内部的にApache HTTPクライアントを使用するドロップウィザードのジャージクライアントを使用しています。サーバー側でエラーが発生した場合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はマジックナンバーだと言っています。

返信ステータスコードを比較したくない場合は、それぞれのサーバー側の例外コードが条件にあるかどうかを確認することができます。返信コードがサーバーエラーファミリにあるかどうかを確認できます。

答えて

0

は解決策を見つけました。

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

こちらがお手伝いします。

2番目のオプションが優先されます。我々はリターンコードがSERVER_ERRORコードに属しているかどうかを確認することができ、コードの下に使用

- :

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

数値と比較したcheckstyleルールによると、「magic number is being used」という警告が表示されます。 –

+0

constanctを追加して使用します。 ここをクリックhttp://pmd.sourceforge.net/pmd-5.0.4/rules/java/controversial.html – gladiator

関連する問題