如何在Scalatra中获取帖子请求的正文?

时间:2012-03-28 16:26:37

标签: scala scalatra

我有一个scalatra servlet:

post("/asdf") {
  ???
}

我的客户在帖子正文中发送xml,所以我需要从请求中提取原始文本。我如何在scalatra中做到这一点?

2 个答案:

答案 0 :(得分:20)

request.body

可让您访问请求正文。因此,如果它是XML并且您希望它作为NodeSeq,请执行:

XML.loadString(request.body)

答案 1 :(得分:4)

+1,好问题

您可以通过" request"访问Servlet请求。 Scalatra路由中的关键字,因此如果post主体本身是xml字符串,则getInputStream和getContentLength提供访问权限;即客户端将存储在命名字段中的xml作为表单帖子的一部分传递。如果是后者,那么下面应该做的诀窍:

post("/foo" && request.getHeader("Accept-Encoding") contains "application/xml") {
  val xml = XML.fromString(params("xml-param-field-name"))
}

如果要在字符串中使用上述解析,请参阅Scalatra Book

中的反XML集成