web-dev-qa-db-ja.com

Retrofit-2.0 +でタイムアウトを設定する方法android

私は このリンク を参照しましたが、私には実装できないようです

私は使用しています

 compile 'com.squareup.retrofit2:retrofit:2.0.2'
 compile 'com.squareup.retrofit2:converter-gson:2.0.2'

私は以下のコードを使用しています、これにタイムアウトを設定する方法!

public class ApiClient {

    public static final String BASE_URL = Constants.BaseURL;
    private static Retrofit retrofit = null;

    public static Retrofit getClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }
}
37
Devrath

タイムアウトオプションに OkHttpClient を設定します。次に、これをRetrofit.Builderのクライアントとして使用します。

final OkHttpClient okHttpClient = new OkHttpClient.Builder()
    .connectTimeout(20, TimeUnit.SECONDS)
    .writeTimeout(20, TimeUnit.SECONDS)
    .readTimeout(30, TimeUnit.SECONDS)
    .build();

Retrofit#BuilderにokHttpClientを使用

Retrofit.Builder()
    .client(okHttpClient);

タイムアウトに関する公式のOkHttpドキュメントはこちら

81
Alex Chengalan

以下のコードを試してください、timeoutは20秒で、readTimeoutは30秒です

 private OkHttpClient getRequestHeader() {
        OkHttpClient httpClient = new OkHttpClient();
        httpClient.setConnectTimeout(20, TimeUnit.SECONDS);
        httpClient.setReadTimeout(30, TimeUnit.SECONDS);

        return httpClient;
    }

それから

public class ApiClient {

    public static final String BASE_URL = Constants.BaseURL;
    private static Retrofit retrofit = null;

    public static Retrofit getClient() {
        if (retrofit==null) {
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .client(getRequestHeader())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
        }
    }
8
Phan Dinh Thai

「com.squareup.retrofit2:retrofit:2.4.0」レトロフィットバージョン> 2を使用している場合、これを試してください。

private OkHttpClient getRequestHeader() 
{
    OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .readTimeout(60, TimeUnit.SECONDS)
        .connectTimeout(60, TimeUnit.SECONDS)
        .writeTimeout(20, TimeUnit.SECONDS)
        .build();

    return okHttpClient;
}
0