Как получить тело почтового запроса в Скалатре? - PullRequest
15 голосов
/ 28 марта 2012

У меня есть сервлет скалатры:

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

И мои клиенты отправляют xml в теле сообщения, поэтому мне нужно извлечь необработанный текст из запроса.Как мне это сделать в скалатре?

Ответы [ 2 ]

20 голосов
/ 28 марта 2012
request.body

дает вам доступ к телу запроса.Поэтому, если это XML и вы хотите использовать его как NodeSeq, выполните:

XML.loadString(request.body)
4 голосов
/ 28 марта 2012

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

У вас есть доступ к сервлет-запросу через ключевое слово request в маршруте 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

...