我有一个Scalatra Servlet:
我有一个Scalatra Servlet:
post("/asdf") {
???
}
我的客户通过POST请求发送xml,因此我需要从请求中提取原始文本。在scalatra中如何完成?
request.body
它使您能够访问请求体。因此,如果它是XML并且您想要将其作为NodeSeq,请执行以下操作:
XML.loadString(request.body)
+1,好问题
在Scalatra路由中,您可以通过"request"关键字访问Servlet请求,因此如果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中的Anti-XML集成(链接)