2011-10-28 12 views
6

Obiettivo: Messaggio Immagine utilizzando RestTemplateCome inviare array di byte tramite RestTemplate

sta utilizzando una variante di questo

MultiValueMap<String, Object> parts = new 
LinkedMultiValueMap<String, Object>(); 
parts.add("field 1", "value 1"); 
parts.add("file", new 
ClassPathResource("myFile.jpg")); 
template.postForLocation("http://example.com/myFileUpload", parts); 

Ci sono delle alternative? Sta postando un JSON che contiene un base64 byte codificato [] array una valida alternativa?

risposta

3

ha finito per trasformare la bitmap in un array di byte e quindi la codifica Base64 per e poi inviandolo via RestTemplate usando Jackson come il mio serializzatore.

8

Yep, con qualcosa come questo immagino

Se l'immagine è la vostra capacità di carico e, se si desidera modificare le intestazioni di poter postare in questo modo:

HttpHeaders headers = new HttpHeaders(); 
headers.set("Content-Type", "image/jpeg"); 
InputStream in = new ClassPathResource("myFile.jpg").getInputStream(); 

HttpEntity<byte[]> entity = new HttpEntity<>(IOUtils.toByteArray(in), headers); 
template.exchange("http://example.com/myFileUpload", HttpMethod.POST, entity , String.class); 

Altrimenti:

InputStream in = new ClassPathResource("myFile.jpg").getInputStream(); 
HttpEntity<byte[]> entity = new HttpEntity<>(IOUtils.toByteArray(in)); 
template.postForEntity("http://example.com/myFileUpload", entity, String.class); 
+0

grazie per il code-davvero mi ha aiutato a capire come tutto questo cosa funziona – eladyanai