Ktor 无法在服务器上接收 POST 正文
Ktor unable to receive POST body on Server
我有以下服务器和客户端代码:
服务器:
fun Application.main() {
install(DefaultHeaders)
install(CallLogging)
install(Routing) {
post("/") {
val requestBody = call.receiveText()
println("Received $requestBody")
call.respond("Hello from server - received $requestBody")
}
}
}
fun main(args: Array<String>) {
embeddedServer(Netty, 8080) {
main()
}.start(wait = true)
}
客户:
fun main(args: Array<String>) = runBlocking {
HttpClient(CIO).use {
val postResult = it.post<String>("http://localhost:8080/") {
body = "Client Hello"
}
println(postResult)
}
}
因此,客户端只是在 POST-body 中向服务器发送 "Client Hello",然后服务器会对此做出响应。
但是我没有在服务器端看到正文的内容。我究竟做错了什么?
call.receiveText()
总是空的。
该问题已在最近的 alpha 版 (>= 0.9.2-alpha-5
) 中修复,并将很快出现在下一个 0.9.2
版本中。
如果你的正文请求中有参数,试试看:
val requestBody = call.receiveParameters()
val value = requestBody["key_name"]
我有以下服务器和客户端代码:
服务器:
fun Application.main() {
install(DefaultHeaders)
install(CallLogging)
install(Routing) {
post("/") {
val requestBody = call.receiveText()
println("Received $requestBody")
call.respond("Hello from server - received $requestBody")
}
}
}
fun main(args: Array<String>) {
embeddedServer(Netty, 8080) {
main()
}.start(wait = true)
}
客户:
fun main(args: Array<String>) = runBlocking {
HttpClient(CIO).use {
val postResult = it.post<String>("http://localhost:8080/") {
body = "Client Hello"
}
println(postResult)
}
}
因此,客户端只是在 POST-body 中向服务器发送 "Client Hello",然后服务器会对此做出响应。 但是我没有在服务器端看到正文的内容。我究竟做错了什么?
call.receiveText()
总是空的。
该问题已在最近的 alpha 版 (>= 0.9.2-alpha-5
) 中修复,并将很快出现在下一个 0.9.2
版本中。
如果你的正文请求中有参数,试试看:
val requestBody = call.receiveParameters()
val value = requestBody["key_name"]