HTTP-Client für Kotlin: Top-Bibliotheken für die Netzwerkarbeit
Moderne Kotlin-Entwicklung ist ohne die Interaktion mit entfernten Servern undenkbar. Ob Android-App, Backend mit Ktor oder plattformübergreifendes Projekt – HTTP-Clients sind die Grundlage für den Datenaustausch. In diesem Artikel betrachten wir die vier besten Bibliotheken für Kotlin: Ktor Client, OkHttp, Fuel und Retrofit. Sie erfahren ihre Besonderheiten, Vorteile und erhalten praktische Codebeispiele.
1. Ktor Client – die native Wahl für Kotlin
Ktor Client ist der offizielle HTTP-Client von JetBrains, der speziell für das Kotlin-Ökosystem entwickelt wurde. Er ist vollständig asynchron, basiert auf Koroutinen und unterstützt plattformübergreifende Entwicklung (JVM, Android, iOS, JS, Native).
Wesentliche Merkmale:
- Volle Unterstützung für Kotlin-Koroutinen
- Modulare Architektur – nur benötigte Plugins einbinden (JSON, WebSockets, Logging)
- Einheitliche API für alle Plattformen
- Integrierte Serialisierung über
kotlinx.serialization
Beispiel einer GET-Anfrage:
import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*
suspend fun fetchData(): String { val client = HttpClient() val response: HttpResponse = client.get("https://api.example.com/data") return response.bodyAsText()}Wann wählen: für plattformübergreifende Projekte, Microservices mit Ktor, bei der Arbeit mit Koroutinen.
2. OkHttp – der bewährte Veteran
OkHttp von Square ist eine der beliebtesten Bibliotheken für JVM und Android. Obwohl sie in Java geschrieben ist, lässt sie sich dank Interoperabilität bequem in Kotlin verwenden. OkHttp ist bekannt für seine Geschwindigkeit, effizienten Verbindungspool und leistungsstarke Anfrage-Interceptor.
Wesentliche Merkmale:
- Automatische Verbindungsverwaltung (Keep-Alive, Pooling)
- Transparente GZIP-Komprimierung
- Unterstützung für HTTP/2 und WebSocket
- Interceptor für Logging, Caching, Wiederholungsversuche
Beispiel einer POST-Anfrage mit JSON:
import okhttp3.*import org.json.JSONObject
val client = OkHttpClient()
fun postJson(): String { val json = JSONObject().apply { put("name", "Kotlin") put("version", 2.0) } val body = json.toString().toRequestBody("application/json".toMediaType()) val request = Request.Builder() .url("https://api.example.com/items") .post(body) .build() return client.newCall(request).execute().body?.string() ?: ""}Wann wählen: für Android-Apps, wenn maximale Leistung und flexible Abfangmöglichkeiten benötigt werden.
3. Fuel – elegantes DSL für Kotlin
Fuel ist eine leichte Bibliothek mit ausdrucksstarkem DSL, die in reinem Kotlin geschrieben ist. Sie eignet sich ideal für kleinere Projekte und Prototypen, bei denen Einfachheit und Lesbarkeit des Codes wichtig sind.
Wesentliche Merkmale:
- Integriertes DSL zum Erstellen von Anfragen
- Unterstützung für Koroutinen und RxJava
- Automatische Deserialisierung in Data-Klassen
- Minimale Anzahl von Abhängigkeiten
Beispiel einer Anfrage mit DSL:
import com.github.kittinunf.fuel.httpGetimport com.github.kittinunf.fuel.core.FuelErrorimport com.github.kittinunf.result.Result
fun fuelExample() { val (request, response, result) = "https://api.example.com/users" .httpGet() .responseString() when (result) { is Result.Success -> println(result.get()) is Result.Failure -> println(result.error) }}Wann wählen: für einfache Skripte, Lernprojekte oder wenn DSL bequemer als Standardaufrufe erscheint.