So stellen Sie das Timeout in Retrofit-2.0+ Android ein

Lesezeit: 2 Minuten

Benutzer-Avatar
Devrath

Ich habe auf diesen Link verwiesen, aber ich kann ihn anscheinend nicht für meinen implementieren

ich benutze

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

Ich verwende den folgenden Code, wie man das Timeout dafür einstellt!

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;
    }
}

Benutzer-Avatar
Alex Chengalan

Konfigurieren OkHttpClient für Timeout-Option. Verwenden Sie diese dann als Client für Retrofit.Builder.

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

Benutze das okHttpClient für Retrofit#Builder

Retrofit.Builder()
    .client(okHttpClient);

Die offizielle OkHttp-Dokumentation zum Timeout ist hier

  • Was ist der Unterschied zwischen Connect, Write und Read Timeout? Danke 🙂

    – ladytoky0

    14. Mai um 0:40 Uhr

  • Connect Timeout – Die maximale Zeit für die Herstellung der ersten Verbindung zum Server. Write Timeout – Die maximale Zeit, die Sie zum Schreiben (Senden) der Anforderungsdaten an den Dienst zulassen. Read Timeout – Die Zeit, die Sie auf die Antwort warten. @ladytoky0 Hoffe das hilft dir 🙂

    – Alex Chengalan

    16. Mai um 6:18 Uhr


  • Danke sehr! so viel klar jetzt 😀

    – ladytoky0

    16. Mai um 20:28 Uhr

Versuchen Sie den folgenden Code, es ist eingestellt timeout ist 20 Sekunden und readTimeout beträgt 30 Sekunden

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

        return httpClient;
    }

Dann

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;
        }
    }

  • Ich bin neugierig, warum Sie Ihre Methode benannt haben getRequestHeader()? Ich würde vorschlagen getHttpClient() wäre ein besserer Name.

    – k2col

    3. September 2017 um 19:20 Uhr

  • Ich bekomme setConnectTimeout() & setReadTimeout() kann nicht aufgelöst werden. Importiertes Paket okhttp3.OkHttpClient. Bitte helfen Sie mir, ich bin neu bei Retrofit/okhttp

    – VVB

    7. September 2017 um 7:51 Uhr

Ich habe unten wie in Kotlin mit MVVM-Modell verwendet.

var okHttpClient: OkHttpClient? = OkHttpClient.Builder()
    .connectTimeout(60, TimeUnit.SECONDS)
    .readTimeout(60, TimeUnit.SECONDS)
    .writeTimeout(60, TimeUnit.SECONDS)
    .build()

private val api = Retrofit.Builder()
    .baseUrl(baseurl)
    .addConverterFactory(GsonConverterFactory.create())
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .client(okHttpClient)
    .build()
    .create(Api::class.java);

Benutzer-Avatar
Purushottam Kumar

Wenn Sie “com.squareup.retrofit2:retrofit:2.4.0” Retrofit-Version > 2 verwenden, versuchen Sie es mit diesem:

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

    return okHttpClient;
}

1055750cookie-checkSo stellen Sie das Timeout in Retrofit-2.0+ Android ein

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy