【问题标题】:Get Parameters from Spring's HTTPREQUEST Object in RestTemplate ClientHttpRequestInterceptor从 RestTemplate ClientHttpRequestInterceptor 中 Spring 的 HTTPREQUEST 对象获取参数
【发布时间】:2019-07-29 19:09:38
【问题描述】:

我的要求是在通过 RestTemplate 来的所有请求的拦截器中添加一些标头,所以我使用的是 ClientHttpRequestInterceptor 但是我还需要添加所有编码在标头中的参数,但是在这个拦截器中,我们得到 HTTPREQUEST 对象,它没有任何方法来获取参数

我尝试过使用 HandlerInterceptorAdapter,它给了我 HttpServletRequest 做我需要的一切,但我不能设置这个拦截器 restTemplate.setInterceptors

公共类 RequestResponseInterceptor 实现 ClientHttpRequestInterceptor {

@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution)
        throws IOException {
    // Add additional headers
    addRequestHeaders(request);
    return execution.execute(request, body);
}

但是在 addRequestHeaders 中如何从请求中获取参数?

【问题讨论】:

    标签: spring httprequest interceptor resttemplate http-request-parameters


    【解决方案1】:
    You can add custom header like below...
    
    @Override
    public ClientHttpResponse intercept(
      HttpRequest request, 
      byte[] body, 
      ClientHttpRequestExecution execution) throws IOException {
    
        ClientHttpResponse response = execution.execute(request, body);
        response.getHeaders().add("Foo", "bar");
        return response;
    }
    

    【讨论】:

    • 感谢您的回复,但我的问题不是我需要在请求中添加标头并且我能够做到,但我的问题是在一个标头中我需要添加请求的编码参数,所以如何获取这里的参数来自请求对象?
    • addAll(MultiValueMap values)
    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多