代码之家  ›  专栏  ›  技术社区  ›  Vinay Prajapati Mahfujur Rahman

spring rest模板覆盖授权头值

  •  1
  • Vinay Prajapati Mahfujur Rahman  · 技术社区  · 6 年前

    我正在做如下的休息电话:

    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 正在被未定义的替换

    请参阅下面网络日志快照中的请求头: enter image description here

    有人知道春天为什么会这样吗? spring-web:5.0.5 罐子。我也试过修改jar的版本,但结果是一样的。

    我使用的SpringBoot版本是 2.0.x .

    0 回复  |  直到 6 年前
        1
  •  1
  •   Mebin Joe Parvez Khan Pathan    6 年前

    如果需要向所有请求添加相同的头,您可以在您的子文件夹中添加一个拦截器:

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