ApacheのHttpClient.executeでのIOExceptionとHttpException(HTTPMETHOD)を処理する方法

StackOverflow https://stackoverflow.com/questions/1189565

  •  19-09-2019
  •  | 
  •  

質問

(以下コピー)

ドキュメントには、IOExceptionをし、HttpExceptionが、そのコンテキストに何を意味するのかについて多くのことを言っていません。

私の質問は:にIOExceptionがHttpClient.execute(HTTPMETHOD)メソッドで発生した後、私は、オブジェクトを破棄して、再度メソッドを実行するために、新規のHttpClientを作成する必要がありますか?あるいは、これらの例外のいくつかが発生した後でまだ使用可能(のHttpClientオブジェクトは)メソッドを実行するのですか?

executeMethod

public int executeMethod(HttpMethod method)
                  throws IOException,
                         HttpException
Executes the given HTTP method.
Parameters:
method - the HTTP method to execute.
Returns:
the method's response code
Throws:
IOException - If an I/O (transport) error occurs. Some transport exceptions can be recovered from.
HttpException - If a protocol exception occurs. Usually protocol exceptions cannot be recovered from.
役に立ちましたか?

解決

あなたが望むように、

あなたは何回でもHttpClientオブジェクトを再利用することができます。私は、バージョン3.0で働いている、これは最近のバージョンでは変更されているかどうかに話すことができない。

の例外に関しては、コメントがクライアントよりHttpMethodでより多くを向けられている。

それは手段で何を、「いくつかのトランスポート例外はから回収することができる」、あなたは要求を再送信し、有効な応答を取得することができるかもしれないということです。 IOExceptionsは、あなたがリクエストを送信することはできませんか(例えば、サーバーがダウンしている、または、それが受信しているすべての要求を処理することはできません)サーバーからの応答を受信しない場合に発生する傾向があります。

それは手段で何を、「通常のプロトコルの例外はから回収することができない」、サーバーがHTTPプロトコル(複数可)を満たしている応答を送信していないためにHTTPリクエストを作っているということです。通常、要求を再送信すると、異なる結果が得られません。

私はこの答えはあなたに有用であることが、おそらく少し遅れている実感が、将来の読者は、まだ利益を得ることができる。

HttpClientを持つ例外処理の上の

このある有用な指針(レガシーとにかくバージョン)。それはので、ここで便利な検索ページを見つけるためます。

scroll top