2014-04-12 8 views

Antwort

10

einen Blick in play.mvc.Http Klasse nehmen, haben Sie einige Optionen gibt (je nach Datenformat), dh

RequestBody body = request().body(); 
MultipartFormData formData = request().body().asMultipartFormData(); 
Map<String, String[]> params = request().body().asFormUrlEncoded(); 
JsonNode json = request().body().asJson(); 
String bodyText = request().body().asText(); 

Sie request().body().asText() dh cUrl von Kommandozeile testen können:

curl -H "Content-Type: text/plain" -d 'Hello world !' http://domain.com/your-post-action 

... oder mit einem Tool, wie Browser-Plugin: https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

+0

ich will, ist die Rohkarosse Zeichenfolge erhalten, ohne es zu jeder Java-spezifische Datenstrukturen zu konvertieren. Wie kann ich das erreichen? – Bourne

+0

Sie sollten in besagte Klasse suchen: P 'String bodyText = request(). Body(). AsText();' – biesior

+3

Ich habe dies versucht, aber das ruft null – Bourne

2

Wenn Sie den folgenden Code auf eine Anfrage aufrufen;

String bodyText = request().body().asText(); 

bodytext wird null sein, wenn der Content-Type-Header Anwendung ist/json

Es gibt keine Möglichkeit, die bereitgestellten Controller-APIs nur Text JSON zu erhalten, wenn der Content-Type-Header-Anwendung ist/json ohne erste

So ist die beste Weg, dies zu einer JsonNode Umwandlung zu tun, wenn die Anwendung/json Ihre Content-Type-Header ist

String bodyText = request().body().asJSON().toString(); 

Dies ist ein auf ausfall spielen Framework-Teil, weil sie nur eine Methode haben sollten, um den Anfragetext als String zu erhalten, egal was der Content-Type-Header ist.

9

Mit dem Play-Framework 2.3 ist es möglich, sogar roh json Text zu bekommen, ist Content-Type-Header application/json

def postMethod = Action(parse.tolerantText) { request => 
    val txt = request.body 
} 
+0

das ist eigentlich die einzige richtige Antwort – aveic

+0

Aber es tut nicht arbeite in Java. – M156

+2

Wahrscheinlich würde das dann helfen: https://www.ricardclau.com/2015/06/access-to-the-raw-request-body-in-play-framework/ –