我正在像下面那样打个电话:
REST_TEMPLATE.exchange(
external_rest_url,
HttpMethod.POST,
new HttpEntity<>(dto, getHeaders()),
Map.class)
和我的标题如下:
private HttpHeaders getHeaders() {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("User-Agent","Spring's RestTemplate");
headers.set(HttpHeaders.AUTHORIZATION, "some value");
return headers;
}
当我运行代码时,标头HttpHeaders.AUTHORIZATION
被未定义替换
有人知道春天为什么会像这样或特别是spring-web:5.0.5
罐子。我也尝试过更改jar的版本,但是结果是相同的。
我使用的Springboot版本是2.0.x
。
答案 0 :(得分:1)
如果您需要向所有请求添加相同的标头,则可以将拦截器添加到RestTemplate中:
public void sampleHeader(final RestTemplate restTemplate){
//Add a ClientHttpRequestInterceptor to the RestTemplate
restTemplate.getInterceptors().add(new ClientHttpRequestInterceptor(){
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
request.getHeaders().set(HttpHeaders.AUTHORIZATION, "some value");//Set the header for each request
return execution.execute(request, body);
}
});
}