2012-03-28 5 views

ответ

20
request.body 

дает вам доступ к запросу тело. Так что если это XML, и вы хотите, чтобы он был как NodeSeq, do:

XML.loadString(request.body) 
+0

+1, «ответ» – virtualeyes

+0

Убедитесь, что Content-Type не является «application/x-www-form-urlencoded» (см. Ответ Росса на https://groups.google.com/forum/#!topic/scalatra-user/lApjIJXiNqg) – uthomas

4

+1, хороший вопрос

У вас есть доступ к Servlet запросу с помощью «запроса» ключевого слова в пределах маршрута Scalatra, так getInputStream и getContentLength обеспечить доступ, если само сообщение телом является строкой XML; то есть клиент не, передающий xml, хранящийся в именованном поле как часть сообщения формы. Если последнее, то ниже следует сделать трюк:

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

Если вы хотите использовать выше разборе от строки, см Anti-XML Интеграция в Scalatra Book

+0

Я новичок в scala и делаю это ^^ Я получаю ошибку компиляции на &&/contains. –

+0

@ gursahib.singh.sahni не уверен, прошло уже 5 лет с тех пор, как я использовал Scalatra ;-) Возможно, попробуйте их [канал Gitter] (https://gitter.im/scalatra/scalatra) – virtualeyes

Смежные вопросы