1. ホーム
  2. R

SocketTimeoutExceptionです。読み込みがタイムアウトしました

2022-02-08 22:23:22
元のアドレスは java.net.SocketTimeoutException: 読み込みがタイムアウトしました


http://xye-462438944-163-com.iteye.com/blog/1205894

org.apache.commons.httpclient.HttpClient クラスで executeMethod メソッドを呼び出すと、例えば以下のようになります。

Javaコード
  1. HttpClient クライアント =  新しい  HttpClient()を使用します。  
  2. httpGet =  新しい  GetMethod(url)を指定します。  
  3. client.getParams().setIntParameter()。 http.socket.timeout"。 3000 );  
HttpClient client = new HttpClient();

httpGet = new GetMethod(url);

client.getParams().setIntParameter("http.socket.timeout", 3000);

Javaコード
  1. client.executeMethod(httpGet)を実行します。  
client.executeMethod(httpGet);

SocketTimeoutExceptionです。Read timed out例外が発生しても、ブラウザで直接urlリンクを入力すると、再びアクセスできることがあります。おそらく、httpClientがリンクを取得する際にタイムアウト制限をかけているためと思われます。この場合、タイムアウト制限を解除すればよいのです。つまり、client.getParams().setIntParameter("http.socket.timeout", 3000);のコードをコメントアウトするか、そのタイムアウト制限を延長します。


http://mywork.iteye.com/blog/430754


この2日間、プロジェクトがテスト環境でURLConnectionによるデータ受け渡しを行っていたところ、以下のエラーが発生しました。
SocketTimeoutException: 読み込みがタイムアウトしました
検索して調べた結果、その理由は
クライアントが制限時間内にデータをサーバに送信しなかったため、サーバはサービスのパフォーマンスを確保するためにその接続は失敗したと判断し、上記の例外が発生しました。
その結果、解答は
クライアントのタイムアウトを増やす。
として
Javaコード
  1. System.setProperty( "sun.net.client.defaultConnectTimeout" 文字列   
  2.                     .valueOf( 10000 )); // (ミリ秒単位)
  3.             System.setProperty( "sun.net.client.defaultReadTimeout" 文字列   
  4.                     .valueOf( 10000 ));  // (ミリ秒単位)
System.setProperty("sun.net.client.defaultConnectTimeout", String
					.valueOf(10000));// (unit: milliseconds)
			System.setProperty("sun.net.client.defaultReadTimeout", String
					.valueOf(10000)); // (unit: milliseconds)

シェアする


からの許可を得て転載しています。 java.net.SocketTimeoutException: 読み込みがタイムアウトしました