播放框架:post 请求中的空主体

Play framework: empty body in post request

喂!我有以下代码:

def foo = Action { request =>
    Ok(request.body.asText.getOrElse("no body"))
}

在前端有这样的形式:

<form action="@controllers.routes.Application.foo()" method="POST">
    <input name="name" type="text">
    <input name="surname" type="text">
     <button type="submit">
</form>

如果我填写表格并点击提交,他们会给我结果:没有正文。 但是如果我在调试器中将制动点添加到 Ok(..),他们会告诉我,那个主体不是空的。

AnyContentAsFormUrlEncoded(Map(name -> ArrayBuffer(123), surname -> ArrayBuffer(123)))

为什么,这没有给我正文或其他任何内容,我如何才能得到它们?

您的内容类型可能不是 text/plain。当内容类型符合预期时,BodyParser 只会 return 结果。

编辑:尝试 asRaw.

而不是 asText

根据您的表单和调试输出,您应该使用 asFormUrlEncoded

您还需要以下内容:

<form ... enctype="text/plain">

指定负载为纯文本。然后 .asText 将起作用。