Skip to content

Repository files navigation

Ktor Android Http Client Example

Simple implementation of Ktor Http Client for Android with Kotlin Serialization. The project is using the free api from thecocktaildb for providing data.

What is Ktor?

Ktor is an open-source framework built by JetBrains for building asynchronous servers and clients using Kotlin programming language.

Implementation

1. build.gradle.kts(app module)

  • Add plugin id("kotlinx-serialization")
  • Add Dependencies
plugins {
...
id("kotlinx-serialization")
}
implementation(platform("io.ktor:ktor-bom:3.4.1"))
implementation("io.ktor:ktor-client-android")
implementation("io.ktor:ktor-client-serialization")
implementation("io.ktor:ktor-client-logging")
implementation("io.ktor:ktor-client-content-negotiation")
implementation("io.ktor:ktor-serialization-kotlinx-json")

2. build.gradle.kts(root)

  • Add Kotlin Serialization plugin
id("org.jetbrains.kotlin.plugin.serialization") version "2.3.10"

3. Create the Http Android Client

privateconstvalNETWORK_TIME_OUT=15_000Lval httpClientAndroid =HttpClient(Android) {
install(ContentNegotiation) {
json(
Json {
prettyPrint =true
isLenient =true
useAlternativeNames =true
ignoreUnknownKeys =true
encodeDefaults =false
}
)
}
install(HttpTimeout) {
requestTimeoutMillis =NETWORK_TIME_OUT
connectTimeoutMillis =NETWORK_TIME_OUT
socketTimeoutMillis =NETWORK_TIME_OUT
}
install(Logging) {
logger =object:Logger {
overridefunlog(message:String) {
Log.v("Logger Ktor =>", message)
}
}
level =if (BuildConfig.DEBUG) LogLevel.ALLelseLogLevel.NONE
}
install(ResponseObserver) {
onResponse { response ->Log.d("HTTP status:", "${response.status.value}")
}
}
defaultRequest {
contentType(ContentType.Application.Json)
accept(ContentType.Application.Json)
}
}

Other technologies used in the project

  • Koin - Koin is a pragmatic and lightweight dependency injection framework for Kotlin developers
  • Jetpack Compose - Android’s modern toolkit for building native UI.
  • Coroutines and Flow - Official Kotlin's tooling for performing asynchronous work.
  • ViewModel - The ViewModel is designed to store and manage UI-related data in a lifecycle conscious way.
  • StateFlow - StateFlow is a state-holder observable flow that emits the current and new state updates to its collectors.

About

Simple implementation of Ktor Http Client for Android

Topics

Resources

Stars

37 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages