1. ホーム
  2. java

[解決済み】OkHttpで接続タイムアウトを設定する方法

2022-04-13 19:43:09

質問

OkHttpライブラリを使用してアプリを開発していますが、接続タイムアウトとソケットタイムアウトを設定する方法がわかりません。

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder().url(url).build();

Response response = client.newCall(request).execute();

解決方法は?

現在 OkHttp3 を使うと、このようなことができます。 ビルダー というように

client = new OkHttpClient.Builder()
    .connectTimeout(10, TimeUnit.SECONDS)
    .writeTimeout(10, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .build();

また、レシピを見ることができます こちら .

古いバージョンの場合は、次のようにするだけです。

OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(15, TimeUnit.SECONDS);    // socket timeout

Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();

で設定した値は setReadTimeout で使用されるものです。 setSoTimeout の上に Socket で内部的に OkHttp Connection クラスがあります。

にタイムアウトを設定しないこと。 OkHttpClient の値を設定することと同じです。 0 の上に setConnectTimeout または setReadTimeout で、タイムアウトは全く発生しません。 説明文はこちら こちら .

コメントで@marceloquintaさんがおっしゃっているように setWriteTimeout を設定することもできます。

バージョンアップ時 2.5.0 読み出し/書き込み/接続のタイムアウト値は、@ChristerNordvik が言及したように、デフォルトで 10 秒に設定されています。 これは、以下のように見ることができます。 ここで .