Ktor Client — HTTP-клиент для Kotlin

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое Ktor Client?

Ktor Client — это асинхронный HTTP-клиент для языка программирования Kotlin, разработанный компанией JetBrains. Он является частью фреймворка Ktor, который предназначен для создания серверных и клиентских приложений. Ktor Client позволяет отправлять HTTP-запросы (GET, POST, PUT, DELETE и другие) и обрабатывать ответы, поддерживая работу с различными движками (OkHttp, Apache, CIO, Android и т.д.).

Зачем нужен Ktor Client?

Ktor Client используется для взаимодействия с REST API, загрузки данных из интернета, отправки форм, работы с WebSocket, а также для интеграции с облачными сервисами. Он полностью написан на Kotlin, что обеспечивает безопасность типов и лаконичность кода. Благодаря поддержке корутин (coroutines) и Flow, Ktor Client идеально подходит для асинхронных и реактивных приложений.

Как установить Ktor Client?

Для использования Ktor Client в проекте на Kotlin добавьте зависимости в файл build.gradle.kts:

dependencies {
    implementation("io.ktor:ktor-client-core:2.3.12")
    implementation("io.ktor:ktor-client-cio:2.3.12") // движок CIO
    implementation("io.ktor:ktor-client-content-negotiation:2.3.12") // для JSON
    implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12") // сериализация
}

Если вы используете Maven, добавьте соответствующие зависимости в pom.xml.

Основные функции

  • Множество движков: OkHttp, Apache, CIO, Android, iOS (Darwin), JavaScript.
  • Асинхронность: Полная поддержка корутин Kotlin (suspend функции).
  • Плагины: Content Negotiation (JSON/XML), Logging, Auth (Basic, Bearer, OAuth), Cookies, WebSocket.
  • Типобезопасность: Сериализация и десериализация через kotlinx.serialization.
  • Потоковая передача: Работа с большими файлами через streaming.

Пример кода на Kotlin

import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.*
import kotlinx.serialization.Serializable
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.serialization.kotlinx.json.*

@Serializable
data class Post(val userId: Int, val id: Int, val title: String, val body: String)

suspend fun fetchPost(): Post {
    val client = HttpClient(CIO) {
        install(ContentNegotiation) {
            json()
        }
    }
    val response: HttpResponse = client.get("https://jsonplaceholder.typicode.com/posts/1")
    val post: Post = response.body()
    client.close()
    return post
}

fun main() = runBlocking {
    val post = fetchPost()
    println("Title: ${post.title}")
}

Когда использовать Ktor Client?

Ktor Client рекомендуется использовать в проектах на Kotlin (JVM, Android, Native, JS), где требуется легковесный, асинхронный и современный HTTP-клиент. Он особенно полезен в микросервисах, Android-приложениях, мультиплатформенных проектах (KMP) и при работе с Kotlin Coroutines. Если вам нужна полная интеграция с экосистемой Kotlin и JetBrains, Ktor Client — лучший выбор.

Рекомендаций