Avendo il seguente codice:Come accedere al corpo del json normale nel controller di riposo a molla?
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(@RequestBody String json) {
System.out.println("json = " + json); // TODO json is null... how to retrieve plain json body?
return "Hello World!";
}
stringa argomento json è sempre nullo nonostante json inviato nel corpo.
Nota che non voglio la conversione di tipo automatico, voglio solo il semplice risultato JSON.
Questo per esempio funziona:
@RequestMapping(value = "/greeting", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
@ResponseBody
public String greetingJson(@RequestBody User user) {
return String.format("Hello %s!", user);
}
Probabilmente posso usare l'utilizzo del ServletRequest o InputStream come argomento per recuperare il corpo reale, ma mi chiedo se c'è un modo più semplice?
'String = jsonBody IOUtils.toString (request.getInputStream());' one-liner con Apache se ne avete bisogno fatto in fretta. [E una domanda simile.] (Http://stackoverflow.com/questions/5806724/springs-requestbody-providing-empty-string-on-post) – madhead
Probabilmente funzionerà, tuttavia mi piacerebbe sbarazzarmi di avere http richiedi come argomenti in azione, e consenti a Spring di ottenere automaticamente il contenuto in una var ... (grazie comunque per la tua risposta) –