Ktor 2.3.8 Help

Adding client dependencies

To use the Ktor HTTP client in your project, you need to configure repositories and add the following dependencies:

Configure the repositories

Before adding Ktor dependencies, you need to configure the repositories for this project:

  • Production

    Production releases of Ktor are available in the Maven central repository. You can declare this repository in your build script as follows:

    repositories { mavenCentral() }
    repositories { mavenCentral() }
  • Early Access Program (EAP)

    To get access to the EAP versions of Ktor, you need to reference the Space repository:

    repositories { maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") } }
    repositories { maven { url "https://maven.pkg.jetbrains.space/public/p/ktor/eap" } }
    <repositories> <repository> <id>ktor-eap</id> <url>https://maven.pkg.jetbrains.space/public/p/ktor/eap</url> </repository> </repositories>

    Note that Ktor EAPs might require the Kotlin dev repository:

    repositories { maven { url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev") } }
    repositories { maven { url "https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev" } }
    <repositories> <repository> <id>ktor-eap</id> <url>https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev</url> </repository> </repositories>

Add dependencies

Client dependency

The main client functionality is available in the ktor-client-core artifact. Depending on your build system, you can add it in the following way:

implementation("io.ktor:ktor-client-core:$ktor_version")
implementation "io.ktor:ktor-client-core:$ktor_version"
<dependency> <groupId>io.ktor</groupId> <artifactId>ktor-client-core-jvm</artifactId> <version>${ktor_version}</version> </dependency>

You can replace $ktor_version with the required Ktor version, for example, 2.3.8.

Multiplatform

For a multiplatform project, you can define the Ktor version and the ktor-client-core artifact in the gradle/libs.versions.toml file:

[versions] ktor = "2.3.8" [libraries] ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }

Then, add ktor-client-core as a dependency to the commonMain source set:

sourceSets { commonMain.dependencies { implementation(libs.ktor.client.core) } }

Engine dependency

An engine is responsible for processing network requests. There are different client engines available for various platforms, such as Apache, CIO, Android, iOS, and so on. For example, you can add a CIO engine dependency as follows:

implementation("io.ktor:ktor-client-cio:$ktor_version")
implementation "io.ktor:ktor-client-cio:$ktor_version"
<dependency> <groupId>io.ktor</groupId> <artifactId>ktor-client-cio-jvm</artifactId> <version>${ktor_version}</version> </dependency>

Multiplatform

For a multiplatform project, you need to add a dependency for the required engine to a corresponding source set.

For example, to add the OkHttp engine dependency for Android, you can first define the Ktor version and the ktor-client-okhttp artifact in the gradle/libs.versions.toml file:

[versions] ktor = "2.3.8" [libraries] ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }

Then, add ktor-client-okhttp as a dependency to the androidMain source set:

sourceSets { androidMain.dependencies { implementation(libs.ktor.client.okhttp) } }

For a full list of dependencies required for a specific engine, see Add an engine dependency.

Plugin dependency

Ktor lets you use additional client functionality (plugins) that is not available by default, for example, logging, authorization, or serialization. Some of them are provided in separate artifacts. You can learn which dependencies you need from a topic for a required plugin.

Last modified: 08 December 2023