我有一个scalatra servlet:
post("/asdf") {
???
}
我的客户在帖子正文中发送xml,所以我需要从请求中提取原始文本。我如何在scalatra中做到这一点?
答案 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集成