Ktor无法在服务器上接收POST正文

时间:2018-04-18 08:47:50

标签: kotlin ktor

我有以下服务器和客户端代码:

服务器:

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)
    }
}

因此,客户端只是将“Client Hello”发送到POST体中的服务器,服务器就会响应。 但我没有在服务器端看到正文的内容。我究竟做错了什么?

call.receiveText()始终为空。

2 个答案:

答案 0 :(得分:2)

此问题已在最近的alphas(&gt; = 0.9.2-alpha-5)中修复,并很快会在下一个0.9.2版本中显示。

答案 1 :(得分:1)

如果您的正文请求中有参数,请尝试:

val requestBody = call.receiveParameters()
val value = requestBody["key_name"]