質問

私はアパッチに新しくなっています HttpClient, 、次のコードを使用して、特定の時間間隔の後にHTTP接続タイムアウト(切断)を取得しました。

PostMethod method = new PostMethod(authURL);
HttpClient client = new HttpClient();
HttpClientParams params= new HttpClientParams();
params.setParameter(params.CONNECTION_MANAGER_TIMEOUT, 10); //10 Nano second
client.executeMethod(method);

しかし、タイムアウト/切断を希望することなく、1分以上待ちますか?問題はどこにありますか?

役に立ちましたか?

解決

httpclientには2つのタイムアウトが関係しています。両方を設定してみてください。

  client.getHttpConnectionManager().
        getParams().setConnectionTimeout(5000);
  client.getHttpConnectionManager().
        getParams().setSoTimeout(5000);

ただし、ネイティブソケット呼び出しに接続が貼られている場合、値は無視されます。そのため、リクエストを別のスレッドで実行する必要がある場合があるため、タイミングを出すことができます。それを行う方法についてのこの質問に対する私の答えを見てください、

Javaネイティブプロセスタイムアウト

他のヒント

接続マネージャーのタイムアウトは、接続マネージャーから接続を取得しようとする行為が時間がかかりすぎるとトリガーします。これは、HTTP接続自体のタイムアウトと同じではありません。代わりにhttpclientparams.setsotimeout()を使用します。

http://hc.apache.org/httpclient-3.x/apidocs/org/apache/commons/httpclient/params/httpmethodparams.html#setsotimeout%28int%29

設定を見ましたか so_timeout ?

メソッドを実行するときに使用するミリ秒単位でソケットタイムアウト(SO_TIMEOUT)を設定します。ゼロのタイムアウト値は、無限のタイムアウトとして解釈されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top