2012-03-28 53 views

回答

20
request.body 

,您可以访问请求身体。所以,如果它是XML,你想把它当作一个NodeSeq,做到:

XML.loadString(request.body) 
+0

+1,“回答” – virtualeyes 2012-03-28 17:26:41

+0

确保Content-Type不是'application/x-www-form-urlencoded'(请参阅https://groups.google.com/forum/#!topic/scalatra-user/lApjIJXiNqg上的Ross答案) – uthomas 2013-11-03 02:09:52

4

+1,好问题

你有Scalatra的路线内通过“请求”关键字访问servlet请求,所以和的getInputStream提供getContentLength如果访问后身体本身的XML字符串;即客户端而不是传递存储在命名字段中的xml作为表单发布的一部分。如果是后者,那么下面应该做的伎俩:

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

如果你想使用上面的字符串解析,请参阅反垃圾XML集成在Scalatra Book

+0

是新来斯卡拉和&& /包含这样^^我得到的编译错误。 – 2017-04-28 13:33:21

+0

@ gursahib.singh.sahni不确定,自从我使用Scalatra以来已经有5年了;-)也许试试他们的[Gitter频道](https://gitter.im/scalatra/scalatra) – virtualeyes 2017-04-29 10:18:31

相关问题