PlayFramework:获取原始请求xml正文作为字符串

时间:2015-12-29 03:54:38

标签: xml scala playframework

我收到一个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>

如何将请求的原始主体提取为字符串?

1 个答案:

答案 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