Ответ 1
request.body
предоставляет вам доступ к телу запроса. Итак, если это XML и вы хотите, чтобы он был как NodeSeq, выполните:
XML.loadString(request.body)
У меня есть сервлет scalatra:
post("/asdf") {
???
}
И мои клиенты отправляют xml в тело сообщения, поэтому мне нужно извлечь исходный текст из запроса. Как это сделать в скаляре?
request.body
предоставляет вам доступ к телу запроса. Итак, если это XML и вы хотите, чтобы он был как NodeSeq, выполните:
XML.loadString(request.body)
+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"))
}
Если вы хотите использовать описанный выше синтаксический анализ из строки, см. раздел "Интеграция с XML-интерфейсом" в Scalaтра-книга