ori*_*rie 3 plugins serialization json kotlin ktor
我正在使用 Ktor 客户端,并尝试使用框架提供的序列化来实现发布请求。
由于某些奇怪的原因,添加序列化可以在服务器端工作,但不能在客户端工作。
摇篮
plugins {
application
kotlin("jvm") version "1.6.10"
id("org.jetbrains.kotlin.plugin.serialization") version "1.6.10"
}
repositories {
mavenCentral()
maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
}
dependencies {
// Ktor server
implementation("io.ktor:ktor-server-core-jvm:$ktor_version")
implementation("io.ktor:ktor-server-content-negotiation-jvm:$ktor_version")
implementation("io.ktor:ktor-serialization-kotlinx-json-jvm:$ktor_version")
implementation("io.ktor:ktor-server-netty-jvm:$ktor_version")
// Ktor client
implementation("io.ktor:ktor-client-core:$ktor_version")
implementation("io.ktor:ktor-client-cio:$ktor_version")
implementation("io.ktor:ktor-client-json:$ktor_version")
implementation("io.ktor:ktor-client-serialization:$ktor_version")
// Arrow
implementation("io.arrow-kt:arrow-core:1.0.1")
// Tests
implementation("ch.qos.logback:logback-classic:$logback_version")
testImplementation("io.ktor:ktor-server-tests-jvm:$ktor_version")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
}
Run Code Online (Sandbox Code Playgroud)
在我的客户端
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.http.*
import io.ktor.util.*
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.serialization.*
@Serializable
data class TastyCredentials(val login: String, val password: String)
@OptIn(InternalAPI::class)
class TastyWorksBroker() : Broker {
companion object {
val client = HttpClient(CIO) {
install(JsonFeature) // JsonFeature is not recognized by IntelliJ
defaultRequest {
url(baseUrl)
contentType(ContentType.Application.Json)
}
}
}
override suspend fun connect(): Boolean {
val response: HttpResponse = client.post("/sessions") {
body = TastyCredentials(login, password)
}
//
}
Run Code Online (Sandbox Code Playgroud)
install(JsonFeature) 不起作用,我也尝试过这个:
install(ContentNegotiation) {
json()
}
Run Code Online (Sandbox Code Playgroud)
也不起作用...
有什么帮助吗?
ori*_*rie 13
我实际上需要为客户端内容协商添加另一个依赖项
implementation("io.ktor:ktor-client-content-negotiation:$ktor_version")
解决了
| 归档时间: |
|
| 查看次数: |
3093 次 |
| 最近记录: |