播放框架: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
将起作用。
喂!我有以下代码:
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
将起作用。