在 Play Framework 2.0.3 (scala) 中,如何确定任何 Request[_] 的大小(以字节为单位)?
我们正在尝试获取此信息以用于记录目的。
我们期望 request.body.asRaw 有一些价值,但我们总是获得 None:
def logRawRequest[A](request: Request[A]) {
request.body match {
case c: AnyContent => println("Raw: "+c.asRaw)
}
}
我们一定缺少一些简单的东西,对吧?
感谢您提供有用的答案!事实证明,Content-Length 标头仅存在于 POST/PUT,因此我们将其用于这些,并回退到 GET/DELETE 的查询长度,如下所示:
val requestSize = request.method match {
case "POST" | "PUT" => request.headers.get(CONTENT_LENGTH).map(_.toInt).getOrElse(-1)
case _ => request.toString().length
}