Kotlin 无法从请求中捕获正文
我在从请求主体捕获数据时遇到问题。我知道这可能是一个非常简单的问题,但我一直在谷歌和ktor文档中寻找这个问题,但还没有找到解决方案Kotlin 无法从请求中捕获正文,kotlin,jackson,ktor,Kotlin,Jackson,Ktor,我在从请求主体捕获数据时遇到问题。我知道这可能是一个非常简单的问题,但我一直在谷歌和ktor文档中寻找这个问题,但还没有找到解决方案 fun main(args: Array<String>) { val server = embeddedServer(Netty, port = 8080, module = Application::mainModule) server.start() } fun Application.mainModule() { ins
fun main(args: Array<String>) {
val server = embeddedServer(Netty, port = 8080, module = Application::mainModule)
server.start()
}
fun Application.mainModule() {
install(ContentNegotiation) {
jackson {
enable(SerializationFeature.INDENT_OUTPUT)
}
}
routing {
post("/") {
val parameters = call.receiveParameters()
println(parameters)
}
}
}
错误:
ERROR ktor.application - Unhandled: POST - /
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.ktor.http.Parameters` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (InputStreamReader); line: 1, column: 1]
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1589)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1055)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:265)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3218)
at io.ktor.jackson.JacksonConverter.convertForReceive(JacksonConverter.kt:44)
at io.ktor.features.ContentNegotiation$Feature$install$3.invokeSuspend(ContentNegotiation.kt:169)
at io.ktor.features.ContentNegotiation$Feature$install$3.invoke(ContentNegotiation.kt)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(PipelineContext.kt:318)
at io.ktor.util.pipeline.SuspendFunctionGun.proceed(PipelineContext.kt:163)
试一试
路由{
职位(“/”){
val参数=call.receive()
println(参数)
}
}
您正在使用call.receiveParameters,但正在传递json正文=pA已存在此问题。
ERROR ktor.application - Unhandled: POST - /
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.ktor.http.Parameters` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information
at [Source: (InputStreamReader); line: 1, column: 1]
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.reportBadDefinition(DeserializationContext.java:1589)
at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1055)
at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:265)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3218)
at io.ktor.jackson.JacksonConverter.convertForReceive(JacksonConverter.kt:44)
at io.ktor.features.ContentNegotiation$Feature$install$3.invokeSuspend(ContentNegotiation.kt:169)
at io.ktor.features.ContentNegotiation$Feature$install$3.invoke(ContentNegotiation.kt)
at io.ktor.util.pipeline.SuspendFunctionGun.loop(PipelineContext.kt:318)
at io.ktor.util.pipeline.SuspendFunctionGun.proceed(PipelineContext.kt:163)
routing {
post("/") {
val parameters = call.receive<String>()
println(parameters)
}
}