2017-04-24 14 views
8

का डिफ़ॉल्ट सामग्री प्रकार शीर्षलेख सेट करें मैं वर्तमान में एक OAuth2RestOperations का उपयोग कर रहा हूं जो स्प्रिंग रेस्ट टेम्पलेट को विस्तारित करता है और मैं सामग्री प्रकार शीर्षलेख निर्दिष्ट करना चाहता हूं।स्प्रिंग रेस्ट टेम्पलेट

केवल एक चीज मुझे क्या करना प्रबंधित किया है स्पष्ट रूप से अनुरोध के दौरान मेरी हेडर स्थापित करने के लिए किया गया था:

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); 
} 

लेकिन यह वास्तव में है कि एक बार स्थापित करने के लिए सक्षम होने के लिए बहुत अच्छा होगा और सेम आरंभीकरण के दौरान सभी के लिए , और विनिमय के बजाय getforObject विधि का सीधे उपयोग करें।

उत्तर

7

सबसे पहले आप अनुरोध इंटरसेप्टर बनाने के लिए:

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); 
    } 
} 

... और फिर आप जो इंटरसेप्टर ऊपर का उपयोग करता है बाकी टेम्पलेट सृजन कोड है:

@Configuration 
public class MyAppConfig { 

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

आप RestTemplate उपवर्ग सकता है अगर आप के लिए गए थे अपने आवेदन में कुछ अन्य विशेष या सार्वभौमिक आरईएसटी टेम्पलेट्स हैं।

संबंधित मुद्दे