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