我收到一个xml作为正文的请求,问题是我要读取正文中的原始字符串。 这是因为在xml标题中有一些注释我要阅读以检测文档的类型。
根据播放框架documentation,你要告诉play框架将请求体解析为xml
def sayHello = Action { request =>
request.body.asXml.map { xml =>
(xml \\ "name" headOption).map(_.text).map { name =>
Ok("Hello " + name)
}.getOrElse {
BadRequest("Missing parameter [name]")
}
}.getOrElse {
BadRequest("Expecting Xml data")
}
}
工作正常但是,如果我尝试打印xml.toString
我没有获得带有注释的原始xml,因为它们位于主xml元素之外。
我还尝试使用request.body.asText
,但它会检查Content-Type
标头,因为它是application/xml
,它不返回字符串,而是返回None
< / p>
如何将请求的原始主体提取为字符串?
答案 0 :(得分:4)
您可以使用tolerantText
之类的
def save = Action(parse.tolerantText) { request =>
Ok("Got: " + request.body)
}
这个不检查Content-Type标头并始终加载 请求body作为String。
https://www.playframework.com/documentation/2.4.x/ScalaBodyParsers