2017-04-24 20 views
8

için varsayılan içerik türü üstbilgisini ayarlama Şu anda Spring RestTemplate'i genişleten bir OAuth2RestOperations kullanıyorum ve içerik türü üstbilgisini belirtmek istiyorum.Spring RestTemplate

yapmam başardınız tek şey açıkça isteği sırasında benim başlığı ayarlamak için oldu:

public String getResult() { 
    String result = myRestTemplate.exchange(uri, HttpMethod.GET, generateJsonHeader(), String.class).getBody(); 
} 

private HttpEntity<String> generateJsonHeader() { 
    HttpHeaders headers = new HttpHeaders(); 
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); 
    return new HttpEntity<>("parameters", headers); 
} 

Ama aslında bir kez bu set edebilmek için çok iyi olurdu ve fasulye başlatma sırasında herkes için ve doğrudan exchange yerine getforObject yöntemini kullanın.

cevap

7

Önce istek önleme oluşturmak zorunda:

public class JsonMimeInterceptor implements ClientHttpRequestInterceptor { 

    @Override 
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, 
     ClientHttpRequestExecution execution) throws IOException { 
    HttpHeaders headers = request.getHeaders(); 
    headers.add("Accept", MediaType.APPLICATION_JSON); 
    return execution.execute(request, body); 
    } 
} 

... sonra interceptor yukarıda kullandığı dinlenme şablon oluşturma kodu vardır: Eğer olsaydı Sen RestTemplate alt sınıf olabilir

@Configuration 
public class MyAppConfig { 

    @Bean 
    public RestTemplate restTemplate() { 
     RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory()); 
     restTemplate.setInterceptors(Collections.singletonList(new JsonMimeInterceptor())); 
     return restTemplate; 
    } 
} 

uygulamanızda başka özel veya evrensel REST şablonları var.

İlgili konular