In Play Framework 2.0.3 (scala), come si determina la dimensione (in byte) di qualsiasi richiesta [_]?Come si ottiene la dimensione di una richiesta in Play 2.0.x?
Stiamo cercando di ottenere queste informazioni per scopi di registrazione.
ci si aspetterebbe un po 'di valore da request.body.asRaw, ma abbiamo sempre ottenere Nessuno:
def logRawRequest[A](request: Request[A]) {
request.body match {
case c: AnyContent => println("Raw: "+c.asRaw)
}
}
Ci deve essere qualcosa di semplice che ci manca, giusto?
Grazie per le utili risposte! Si scopre che l'intestazione Content-Length è presente solo per POST/PUT, quindi usiamo per coloro, e fallback alla lunghezza della query per GET/DELETE, in questo modo:
val requestSize = request.method match {
case "POST" | "PUT" => request.headers.get(CONTENT_LENGTH).map(_.toInt).getOrElse(-1)
case _ => request.toString().length
}
Grazie Richard, abbiamo finito con l'intestazione Content-Length per le richieste POST/PUT – Ash