Ktor 2.3客户端安装ContentNegotiation遇类型不匹配问题求助
Ktor 2.3 HTTP客户端安装ContentNegotiation插件出现类型不匹配错误
我在使用Ktor 2.3版本的HTTP客户端时,编写了以下代码:
val ktorClient = HttpClient(CIO) { install(ContentNegotiation) }
出现了如下错误:
Type mismatch. Required: HttpClient Found: RouteScopedPlugin<ContentNegotiationConfig>
我的导入语句:
import io.ktor.client.* import io.ktor.client.engine.cio.* import io.ktor.serialization.kotlinx.json.* import io.ktor.server.plugins.contentnegotiation.* import io.ktor.serialization.kotlinx.json.* import kotlinx.serialization.json.Json import io.ktor.client.* import io.ktor.client.engine.cio.* import io.ktor.client.plugins.websocket.*
依赖配置:
implementation("io.ktor:ktor-server-core:$ktor_version") implementation("io.ktor:ktor-server-netty:$ktor_version") implementation("io.ktor:ktor-client-core:$ktor_version") implementation("io.ktor:ktor-client-cio:$ktor_version") implementation("io.ktor:ktor-serialization:$ktor_version") implementation("io.ktor:ktor-server-content-negotiation:$ktor_version") implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version") implementation("io.ktor:ktor-client-content-negotiation:$ktor_version")
请问问题出在哪?
问题原因
你导入了服务器端的ContentNegotiation插件,而不是客户端版本。从导入语句里的io.ktor.server.plugins.contentnegotiation.*可以看出,这个包属于Ktor服务器模块,和客户端插件类型不兼容,直接导致了类型匹配错误。
解决方案
修正导入语句:移除服务器端的
ContentNegotiation导入,替换为客户端版本:// 删除这行服务器端导入 // import io.ktor.server.plugins.contentnegotiation.* // 添加客户端插件的导入 import io.ktor.client.plugins.contentnegotiation.*完整正确的代码示例:
import io.ktor.client.* import io.ktor.client.engine.cio.* import io.ktor.client.plugins.contentnegotiation.* import io.ktor.serialization.kotlinx.json.* import kotlinx.serialization.json.Json val ktorClient = HttpClient(CIO) { install(ContentNegotiation) { json(Json { prettyPrint = true isLenient = true }) } }
你的依赖配置已经包含了客户端所需的ktor-client-content-negotiation,无需额外修改。
内容的提问来源于stack exchange,提问作者jpganz18
相关产品推荐
相关产品推荐

