我正在打如下电话:

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

请从网络日志中查看以下快照中的请求标头:
java - Spring Rest模板覆盖Authorization header 值-LMLPHP

有谁知道春天为什么如此或特别是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/

10-10 03:05