Si prega di guardare a questo semplice codice:Primavera/RestTemplate - entità PUT al server
final String url = String.format("%s/api/shop", Global.webserviceUrl);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.set("X-TP-DeviceID", Global.deviceID);
HttpEntity entity = new HttpEntity(headers);
HttpEntity<Shop[]> response = restTemplate.exchange(url, HttpMethod.GET, entity, Shop[].class);
shops = response.getBody();
Come si può vedere, al di sopra del codice ha lo scopo di ottenere l'elenco dei negozi dal server (in formato JSON) e mappare risposta alla array di oggetti Shop. Ora ho bisogno di mettere un nuovo negozio, ad esempio come/api/shop/1. L'entità richiesta deve avere esattamente lo stesso formato di quello restituito.
Devo aggiungere/1 al mio url, creare un nuovo oggetto di classe Shop, con tutti i campi riempiti con i miei valori che voglio inserire e quindi utilizzare lo scambio con HttpMethod.PUT?
Per favore, chiariscimi per me, sono principiante con Spring. L'esempio di codice sarebbe apprezzato.
[modifica] Sono doppiamente confuso, perché ho appena notato anche il metodo RestTemplate.put(). Quindi, quale dovrei usare? Scambio o put()?
Suppongo dovrei usare requestEntity invece di un'entità come parametro di scambio? Inoltre, perché id è hasmap, vuoi dire possibili parametri multipli di url? – user1209216
sì, è per più parametri url. Penso che ci sia una versione sovraccaricata che non richiede la mappa, potresti passare direttamente il parametro url così come il parametro di query (se necessario). ha aggiornato la risposta con requestEntity anziché entità. – cpd214
Ottima risposta! So che è un problema minore, ma per favore correggi questa riga: param.put ("id", "10") poiché questo è diverso dai semplici caratteri di citazione, ho appena copiato il codice in un editor e ho rivelato che quei caratteri sono diversi . –