"缺少边界标题"在scala play中使用ws.url

时间:2016-06-15 10:43:19

标签: scala playframework-2.5

我正在针对虚拟端点测试服务,使用以下代码:

ws.url(dummyService).withHeaders(HeaderNames.CONTENT_TYPE -> "multipart/form-data; boundary=-----{}}AAA{{}-----").post(myData)

这会生成请求ok,标题设置正确。

在我的模拟服务中,我像这样处理响应:

def checkData = Action(parse.multipartFormData) { request =>
    request.body.files.find(_.filename.endsWith("testfail.pdf")) match {
      case Some(invalidFile) => BadRequest("Parse Fail")
      case None => Ok("Parse Success")
    }
  }

当我运行测试时,出现错误400,并显示以下消息:

For request 'POST /TEST/process' [Missing boundary header]

我做错了什么?

1 个答案:

答案 0 :(得分:2)

要使用Action(parse.multipartFormData),您必须确保相应的POST请求使用multipart/form-datamore on when to use it)的表单编码。

换句话说,您需要在模板中定义表单,如下所示:

@helper.form(action = routes.MyApp.upload, 'enctype -> "multipart/form-data") {
  // ...
}

使用不同的编码发送POST会导致[Missing boundary header]错误。