2012-04-19 9 views
2

以下は、Javaネットワーキングの503応答コードを扱う適切な方法でしょうか?このコードは具体的には切断するコールとnullを行うものですか?503応答コードを処理する方法java.net

URL url = new URL(some url); 
HttpURLConnection h =(HttpURLConnection)url.openConnection(); 
int x = h.getResponseCode(); 
while(x==503) 
{ 
    h.disconnect(); 
    h = null; 
    h =(HttpURLConnection)url.openConnection(); 
    x = h.getResponseCode(); 
} 

答えて

4

disconnect()は、基になるTCPソケットを閉じます。

ローカル変数を再割り当てする直前にnullに設定すると、何も実行されません。

このループでは、障害が発生するたびに間隔が増え、制限された再試行回数でスリープする必要があります。

1

あなたがしたいことは何でも適切な方法です。フェイルセーフを行うには、ではなく、成功するまで繰り返す方が良いでしょう.0153シナリオを処理するのはです。

最も簡単な例:ループが200(成功)までのコードが戻ってきます。

(よりよいが可能アウトとメソッドとクラスにOOPとユニットテストを使用して抽象化するだろう。)一般的な観点から

+2

-1、それは非常に悪い考えです。例:3XXレスポンスコード(リダイレクト)は、何件のリクエストを行っても異なるものではありません。 4XXコードもありません(不正リクエスト/未承認、501(実装されていない))が同様に変更される可能性は低くなります(実装されるまで)。実際はhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10をご覧ください。 htmlで、実際にはほとんどコードが非永続的な性質を持っていることがわかります.HTTPプロトコルの一般的な遵守を維持したい場合は、より洗練されたエラー処理が必要です。 – pap

+0

私は同意します。 503のようなものに「ハック」を追加することは、アプリケーションの仕組みの「全体像」を実際に見ていないことを指摘しています。 – ianpojman

関連する問題