2009-07-27 3 views
4

文書には、そのコンテキストでIOExceptionとHttpExceptionが何を意味するかについてはあまり言及されていません。ApacheでIOExceptionとHttpExceptionを処理する方法HttpClient.execute(HttpMethod)

私の質問は、HttpClient.execute(HttpMethod)メソッドでIOExceptionが発生した後、メソッドを再度実行するためにオブジェクトを破棄して新しい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. 

答えて

4

HttpClientオブジェクトは、何度でも再利用できます。私はバージョン3.0で作業していますが、これが最新のバージョンで変更されているかどうかについては話すことができません。

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

「一部の転送例外は回復できます」とは、要求を再送信して有効な応答を得ることができるということです。 IOExceptionsは、リクエストを送信できない場合や、サーバーからの応答を受信しない場合(サーバーがダウンしている、または受信しているすべてのリクエストを処理できないなど)に発生する傾向があります。

「通常はプロトコルの例外を回復できません」というのは、HTTP要求を出しているサーバーがHTTPプロトコルに準拠した応答を送信していないということです。通常、要求を再送信しても結果は異なりません。

私はこの答えがおそらくあなたに役立つには少し遅れていることを認識していますが、将来の読者はまだ利益を得ることができます。

これはHttpClient(いずれにしても旧バージョン)を使用したa useful guide on exception handlingです。移動する可能性がありますので、ページを見つけるためのuseful searchがあります。

関連する問題