Utilizzo framework di gioco in Java. Desidero recuperare l'intero corpo della richiesta inviato in una richiesta POST al server di riproduzione. Come posso recuperarlo?Recupera la stringa del corpo della richiesta inviata in POST request in play framework java
risposta
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
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.
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
}
voglio ottenere la stringa corpo grezzo senza convertirlo in qualsiasi specifiche strutture di dati java. Come posso raggiungere questo obiettivo? – Bourne
Si dovrebbe esaminare la classe menzionata: P 'String bodyText = request(). Body(). AsText();' – biesior
Ho provato questo, ma recupera null – Bourne