我目前正在使用扩展Spring RestTemplate的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);
}
Run Code Online (Sandbox Code Playgroud)
但实际上很高兴能够在bean初始化期间一劳永逸地设置它,并直接使用getforObject方法而不是交换.
dig*_*ise 23
首先,您必须创建请求拦截器:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
...然后你有休息模板创建代码使用上面的拦截器:
@Configuration
public class MyAppConfig {
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory());
restTemplate.setInterceptors(Collections.singletonList(new JsonMimeInterceptor()));
return restTemplate;
}
}
Run Code Online (Sandbox Code Playgroud)
RestTemplate如果要在应用程序中使用其他专用或通用REST模板,则可以进行子类化.
G Q*_*ana 13
从 Spring Boot 1.4 开始,您可以使用RestTemplateBuilder
RestTemplate restTemplate = new RestTemplateBuilder()
.defaultHeader(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE)
.build();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14949 次 |
| 最近记录: |