Ktor 无法在服务器上接收 POST 正文
Posted
技术标签:
【中文标题】Ktor 无法在服务器上接收 POST 正文【英文标题】:Ktor unable to receive POST body on Server 【发布时间】:2018-09-28 10:16:10 【问题描述】:我有以下服务器和客户端代码:
服务器:
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 正文中向服务器发送“Client Hello”,服务器会对此作出响应。 但是我没有在服务器端看到正文的内容。我究竟做错了什么?
call.receiveText()
始终为空。
【问题讨论】:
您使用的是哪个版本的 ktor?看来0.9.2-alpha-6
没有这个问题。 0.9.2
即将发布。
我用的是0.9.1(所以是最新发布的版本)
【参考方案1】:
该问题已在最近的 Alpha 版 (>= 0.9.2-alpha-5
) 中修复,并将很快出现在下一个 0.9.2
版本中。
【讨论】:
谢谢。知道“很快”是什么意思吗? 看来你是一个新的开发者@Jebrains。很高兴为您提供第一个声望点。欢迎使用 ***!【参考方案2】:如果你的正文请求中有参数,请尝试:
val requestBody = call.receiveParameters()
val value = requestBody["key_name"]
【讨论】:
以上是关于Ktor 无法在服务器上接收 POST 正文的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ktor kotlin 通过 POST 发送 JSON 字符串?
如何在 Ktor 中获取 call.response 的 http 正文?