2014-04-12 9 views

risposta

10

Date un'occhiata in play.mvc.Http classe, avete alcune opzioni lì (a seconda del formato dei dati) ovvero

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(); 

È possibile verificare request().body().asText() vale a dire utilizzando Curl da riga di comando:

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

... o utilizzando alcuni strumenti, come il plug-in del browser: https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

+0

voglio ottenere la stringa corpo grezzo senza convertirlo in qualsiasi specifiche strutture di dati java. Come posso raggiungere questo obiettivo? – Bourne

+0

Si dovrebbe esaminare la classe menzionata: P 'String bodyText = request(). Body(). AsText();' – biesior

+3

Ho provato questo, ma recupera null – Bourne

2

Se si chiama il codice seguente su una richiesta;

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

bodyText sarà nullo se l'intestazione Content-Type è application/json

Non c'è un modo utilizzando le API del controller fornite per ottenere solo il testo JSON se l'intestazione Content-Type è application/jSON senza prima convertirli in un JsonNode

Quindi il modo migliore per farlo se l'applicazione/jSON è l'intestazione Content-Type è

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

questo è un fail su gioca la parte del framework, perché dovrebbero avere solo un metodo per ottenere il corpo della richiesta come una stringa indipendentemente dall'intestazione Content-Type.

9

del gioco con il Framework 2.3 è possibile ottenere il testo JSON elevata anche è Content-Type intestazione è application/json

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

che in realtà è l'unica risposta giusta – aveic

+0

Ma non lo fa lavoro in Java. – M156

+2

Probabilmente sarebbe utile: https://www.ricardclau.com/2015/06/access-to-the-raw-request-body-in-play-framework/ –