HTTP-Client in Kotlin: Anfragen richtig stellen

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

Einführung in HTTP-Clients mit Kotlin



Moderne Kotlin-Entwicklung ist ohne Interaktion mit entfernten APIs und Webdiensten nicht denkbar. Ein HTTP-Client ist ein grundlegendes Werkzeug, das Ihrer Anwendung ermöglicht, Anfragen zu senden und Antworten aus dem Internet zu empfangen. Unabhängig davon, ob Sie eine mobile App, ein Server-Backend oder eine Desktop-Anwendung entwickeln, ist die Fähigkeit, korrekt mit HTTP-Anfragen zu arbeiten, eine unverzichtbare Fähigkeit für jeden Kotlin-Entwickler.



In diesem Artikel werden wir im Detail besprechen, welche Bibliotheken für die Arbeit mit HTTP im Kotlin-Ökosystem verfügbar sind, wie man GET- und POST-Anfragen durchführt, JSON verarbeitet und Asynchronität verwaltet. Sie erfahren, wie Sie typische Fehler vermeiden und Ihren Code zuverlässig und leistungsfähig gestalten.



Wichtige Bibliotheken für HTTP-Clients in Kotlin



1. Ktor Client



Ktor ist ein modernes asynchrones Framework, das von JetBrains speziell für Kotlin entwickelt wurde. Der Ktor Client unterstützt Coroutinen, Multiplattform (JVM, Android, iOS, JS, Native) und bietet eine flexible konfigurierbare Engine.



Beispiel einer einfachen GET-Anfrage mit Ktor:



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") client.close() return response.bodyAsText()}


2. OkHttp



OkHttp ist eine der beliebtesten Bibliotheken für Java und Android, die auch mit Kotlin hervorragend funktioniert. Sie zeichnet sich durch hohe Leistung, Unterstützung von HTTP/2, automatischen Verbindungspool und Interceptors aus.



Beispiel einer synchronen GET-Anfrage mit OkHttp:



import okhttp3.OkHttpClientimport okhttp3.Request

fun fetchData(): String { val client = OkHttpClient() val request = Request.Builder() .url("https://api.example.com/data") .build() client.newCall(request).execute().use { response -> return response.body?.string() ?: "" }}


3. Fuel



Fuel ist eine leichte und intuitiv verständliche Bibliothek für Kotlin, die auf OkHttp basiert. Sie bietet einen funktionalen Stil für die Arbeit mit Anfragen und eine bequeme Ergebnisverarbeitung.



Beispiel einer GET-Anfrage mit Fuel:



import com.github.kittinunf.fuel.httpGetimport com.github.kittinunf.result.Result

fun fetchData() { "https://api.example.com/data" .httpGet() .responseString { _, _, result -> when (result) { is Result.Success -> println(result.value) is Result.Failure -> println(result.error) } }}


Wie man GET- und POST-Anfragen korrekt sendet



GET-Anfragen



GET-Anfragen werden verwendet, um Daten vom Server abzurufen. Die Anfrageparameter werden normalerweise in der URL übergeben. Bei Verwendung von Ktor können Parameter über den parameter-Block hinzugefügt werden:



val client = HttpClient()val response = client.get("https://api.example.com/search") {    parameter("query", "Kotlin")    parameter("page", 1)}


Wichtig zu beachten: GET-Anfragen sollten den Serverzustand nicht ändern und keinen Anforderungstext enthalten. Alle Daten werden über die URL oder Header übergeben.



POST-Anfragen



POST-Anfragen sind zum Senden von Daten an den Server bestimmt (z. B. Erstellen einer neuen Ressource). Der Anforderungstext kann im JSON-, Form URL Encoded- oder Multipart-Format vorliegen.



Beispiel einer POST-Anfrage mit JSON-Text über Ktor:



import io.ktor.client.request.*import io.ktor.http.*

data class User(val name: String, val email: String)

suspend fun createUser(user: User): String { val client = HttpClient() val response = client.post("https://api.example.com/users") { contentTyp

Blogs

Buchempfehlungen