OkHttp für Kotlin: Komplettes Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist OkHttp und warum braucht man es?

OkHttp ist eine leistungsstarke und effiziente HTTP-Bibliothek für die JVM (Java Virtual Machine), Android und Kotlin/Native, entwickelt von Square. Sie bietet eine komfortable API zum Senden von HTTP-Anfragen und Verarbeiten von Antworten. OkHttp ist der De-facto-Standard für Netzwerkkommunikation im Android-Ökosystem und wird auch in serverseitigen Kotlin-Anwendungen intensiv genutzt.

Warum OkHttp anstelle der Standard-Java-Klassen (HttpURLConnection) verwenden?

  • Einfachheit und Komfort: Eine saubere, fließende (fluent) API, die leicht zu lesen und zu schreiben ist.
  • Leistung: Integrierte Unterstützung für HTTP/2, automatische Antwortkomprimierung (gzip), Verbindungspooling (connection pooling) und Caching.
  • Zuverlässigkeit: Automatische Wiederholungsversuche bei Netzwerkfehlern, Robustheit gegenüber DNS- und TLS-Problemen.
  • Flexibilität: Einfach konfigurierbare Interceptors für Logging, Authentifizierung und das Modifizieren von Anfragen und Antworten.
  • Testbarkeit: Möglichkeit, die Netzwerkschicht mit MockWebServer zu simulieren.

OkHttp ist ideal für Android-Apps, REST-API-Clients, Microservices und alle anderen Kotlin-Projekte, die eine zuverlässige und schnelle HTTP-Kommunikation benötigen.

Installation

OkHttp wird über Maven Central verteilt. Zur Einbindung in Ihr Projekt verwenden Sie das Build-System Gradle (am weitesten verbreitet für Kotlin).

Für Android / Kotlin/JVM-Projekte (build.gradle.kts):

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.12.0")
    // Für Logging (optional)
    implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
}

Für Android / Kotlin/JVM-Projekte (build.gradle):

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
}

Für Maven (pom.xml):

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.12.0</version>
</dependency>

Wichtig: Stellen Sie sicher, dass die OkHttp-Version mit Ihrer Kotlin-Version kompatibel ist. Die aktuelle Version finden Sie immer auf MVNRepository.

Schnellstart

Das einfachste Beispiel: eine GET-Anfrage ausführen und den Antworttext als String erhalten.

import okhttp3.OkHttpClient
import okhttp3.Request
import java.io.IOException

fun main() {
    // 1. Client erstellen (normalerweise einer für die gesamte App)
    val client = OkHttpClient()

    // 2. Anfrage erstellen
    val request = Request.Builder()
        .url("https://api.github.com/users/octocat")
        .build()

    // 3. Anfrage synchron ausführen (blockiert den aktuellen Thread)
    client.newCall(request).execute().use { response ->
        if (!response.isSuccessful) {
            throw IOException("Unerwarteter Statuscode $response")
        }
        // 4. Antworttext auslesen
        println(response.body?.string())
    }
}

Erklärung:

  1. OkHttpClient() — erstellt eine Client-Instanz. Diese ist threadsicher, daher empfiehlt es sich, eine Instanz zu erstellen und wiederzuverwenden.
  2. Request.Builder() — verwendet das Builder-Entwurfsmuster zur Konfiguration der Anfrage.
  3. client.newCall(request) — erstellt einen neuen Aufruf (Call), der synchron (execute()) oder asynchron (enqueue()) ausgeführt werden kann.
  4. response.use { ... } — stellt sicher, dass die Antwortressourcen (Body, Verbindung) nach der Nutzung geschlossen werden.
  5. response.body?.string() — liest den Antworttext als String. Wichtig: Der Body kann nur einmal gelesen werden.

Empfehlungen