【问题标题】:How to get the body of post request in Scalatra?如何在 Scalatra 中获取发布请求的正文?
【发布时间】:2012-03-28 16:26:37
【问题描述】:

我有一个 scalatra servlet:

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

我的客户在帖子正文中发送 xml,所以我需要从请求中提取原始文本。我如何在 scalatra 中做到这一点?

【问题讨论】:

    标签: scala scalatra


    【解决方案1】:
    request.body
    

    允许您访问请求正文。因此,如果它是 XML 并且您希望它作为 NodeSeq,请执行以下操作:

    XML.loadString(request.body)
    

    【讨论】:

    【解决方案2】:

    +1,好问题

    您可以通过 Scalatra 路由中的“request”关键字访问 Servlet 请求,因此如果帖子正文本身是 xml 字符串,则 getInputStream 和 getContentLength 提供访问权限;即客户端将存储在命名字段中的xml作为表单帖子的一部分传递。如果是后者,那么下面应该可以解决问题:

    post("/foo" && request.getHeader("Accept-Encoding") contains "application/xml") {
      val xml = XML.fromString(params("xml-param-field-name"))
    }
    

    如果您想从字符串中使用上述解析,请参阅Scalatra Book 中的 Anti-XML 集成

    【讨论】:

    • 我是 scala 新手,这样做 ^^ 在 &&/contains 上遇到编译错误。
    • @gursahib.singh.sahni 不确定,我使用 Scalatra 已经 5 年了;-) 也许试试他们的 Gitter channel
    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多