我正在打如下电话:
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
被替换为undefined请从网络日志中查看以下快照中的请求标头:
有谁知道春天为什么如此或特别是
spring-web:5.0.5
jar。我也尝试过更改jar版本,但是结果是一样的。我使用的Springboot版本是
2.0.x
。 最佳答案
如果需要向所有请求添加相同的标头,则可以将拦截器添加到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);
}
});
}
关于java - Spring Rest模板覆盖Authorization header 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54880522/