我正在使用sbt版本scalatra 2.2
运行0.13.0
并使用其内置服务器(jetty)。我在kubuntu 13.10 64 bit和我的java版本1.7.0_51
上运行。我正在使用OpenJDK 64-Bit
。在我的示例应用中,我可以通过GET
获得params
参数,但我无法获得POST
个参数。我检查了request.body
,它显示我正在发送这些参数。
我的GET
代码看起来像这样
get("/requests") {
val typ = params.getOrElse("type", null)
Map(
"success" -> true,
"respones" -> responses.get(typ)
)
}
这很有效。
我的POST
代码如下所示
post("/user/register") {
val typ = params.getOrElse("type", null) // here typ is always null even when i send type as formdata
if (typ == null) {
halt(400, Map("type"-> typ, "body"-> request.body.toString))
}
// more code
}
这不起作用。我得到的回应是
{"type":null,"body":"------WebKitFormBoundaryE05sRkwjtB4gBgSW\r\nContent-Disposition: form-data; name=\"type\"\r\n\r\nzombie\r\n------WebKitFormBoundaryE05sRkwjtB4gBgSW--\r\n"}
所以你看到参数type
在请求体中存在但在params
中为空。
我也尝试了this,但我无法获得POST
次请求。有一个github问题here
帮助
答案 0 :(得分:2)
如果包含FileUploadSupport特性,它将允许您处理多部分表单,因为您的示例显示了表单边界,表明这是问题所在。
包含示例:
import org.scalatra.ScalatraServlet
import org.scalatra.servlet.{FileUploadSupport, MultipartConfig, SizeConstraintExceededException}
class MyApp extends ScalatraServlet with FileUploadSupport {
configureMultipartHandling(MultipartConfig(maxFileSize = Some(3*1024*1024)))
// ...
}