我是Ktor的新手,我正在尝试构建一个处理登录凭据的后端。我试图使用内容协商功能将JSON转换为本机Kotlin对象,但我不断获得不受支持的媒体类型异常。这是我的代码:
fun Application.main() {
install(CallLogging)
install(DefaultHeaders)
install(ContentNegotiation) {
register(ContentType.Application.Json, GsonConverter())
}
routing {
get("/") {
call.respondHtml {
head {
title("Kotlin Webapp")
script {
type = ScriptType.textJScript
src = "main.bundle.js"
}
}
body {
div {
id = "root"
}
}
}
}
post("/login") {
val credentials = call.receive<Credentials>()
println(credentials)
}
}
}
data class Credentials(val username: String, val password: String)
这是我想要转换的传入Json,我通过XMLHttpRequest发送:
{"username":"Jamdan2","password":"sometext"}
我在网上搜索了答案,但找不到我做错了什么。有人可以帮忙吗?
答案 0 :(得分:1)
为了完整起见,我的评论似乎有所帮助:
您需要确保请求的Content-Type
header设置为正确的值,在本例中为application/json
,否则服务器无法完全确定如何处理收到的内容。
xhr.setRequestHeader("Content-Type", "application/json");