Главное для тех, кто тащит Ktor на KMP/Android — артефакт
ktor-client-engine-defaults. Кладешь в common, создаешь клиент без Android/CIO/OkHttp в shared-коде: на каждом таргете подтянется свой engine. Рядом HttpCache переехал на Path из kotlinx-io, так что файловый кэш больше не привязан к java.io.File:// было в 3.5
// engine выбираешь сам в common или ожидаешь expect/actual
val client = HttpClient(OkHttp) {
install(HttpCache) {
publicStorage(FileStorage(...))
}
}
// стало в 3.6: commonMain
api("io.ktor:ktor-client-engine-defaults:3.6.0")
val client = HttpClient() {
install(HttpCache) {
publicStorage(FileStorage(Path(...)))
}
}
Ещё по клиенту:
ContentNegotiation больше не обязан дописывать свои типы в Accept, если ты уже выставил заголовок сам — ContentTypeMergeStrategy.SkipIfPresent. Мелочь, но спасает, когда API капризный к точному Accept.🔗 Анонс
#Kotlin #Ktor #KMP
