2015-09-17 17 views
5

Benim geçerli kod:/uzatmak RestTemplate

X-TP-DeviceID : <GUID> 

nedir: Ben formda, benim istek için bazı özel başlıkları eklemek gerekir

RestTemplate restTemplate = new RestTemplate(); 
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
Mall[] malls = restTemplate.getForObject(url, Mall[].class); 

Benim durumumda bunu yapmanın en kolay yolu? Sunucuya istek göndermeden önce, restTemplate nesnesine özel haddeler tanımı eklemenin bir yolu var mı?

[değiştir] Doğru mu?

RestTemplate restTemplate = new RestTemplate(); 
       restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 

       HttpHeaders headers = new HttpHeaders(); 
       headers.set("X-TP-DeviceID", "1234567890"); 
       HttpEntity entity = new HttpEntity(headers); 

       HttpEntity<Mall[]> response = restTemplate.exchange(url, HttpMethod.GET, entity, Mall[].class); 

       Mall[] malls = response.getBody(); 

[katma] Yani, bundan çalışıyor başardı. Ancak, bundan tamamen memnun değilim. Benim durumumda, yaptığım tüm çağrılar için aynı özel başlıkları vermem gerekecek.

Yani, bir sonraki sorum şu: Her bir websesrvice çağrısında özel başlıkların otomatik olarak eklenmesini ayarlamak mümkün mü? Örneğin RestTemplate sınıfını genişleterek ve tüm özel üstbilgileri buraya yerleştirerek. Yani, tüm ihtiyacım olan şey, yalnızca bir tanesi yerine özel genişletilmiş RestTemplate'i kullanacak ve tüm özel başlıklarım varsayılan olarak orada olacak.

cevap

9

Özel http başlıklarını aşağıdaki gibi RestTemplate değişim yöntemiyle iletebilirsiniz.

( ) This link has several ways of calling rest service with examples
RestTemplate restTemplate = new RestTemplate(); 

HttpHeaders headers = new HttpHeaders(); 
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON)); 
headers.setContentType(MediaType.APPLICATION_JSON); 
headers.set("X-TP-DeviceID", "your value"); 

HttpEntity<String> entity = new HttpEntity<String>("parameters", headers); 

ResponseEntity<Mall[]> respEntity = restTemplate.exchange(url, HttpMethod.POST, entity, Mall[].class); 

Mall[] resp = respEntity.getBody(); 
+0

Üzgünüm, hala benim için net değil. Kodumun değiştirilmiş sürümünü sağlayabilir misiniz? RestRresponse yerine Mall [] sahibi olacağım anlamına mı geliyor? "İstek" nedir? RespEntity nesnesini getForObject çağrısına parametre olarak eklemem gerekir mi? Ayrıca benim durumumda – user1209216

+0

olsun http yöntemine ihtiyacım var Düzenlenmiş kod – kswaughs

+0

Thx ile deneyin, ayrıca biraz farklı bir çözüm buldum, bu da doğru mu? Sorumu güncelledim. Btw headers.add veya headers.set'i kullanabilirim, aralarındaki fark nedir? – user1209216

İlgili konular