java – 如何删除Spring的RestTemplate添加的某些HTTP头?

前端之家收集整理的这篇文章主要介绍了java – 如何删除Spring的RestTemplate添加的某些HTTP头?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我遇到了远程服务的问题我无法控制对使用Spring的RestTemplate发送的请求的HTTP 400响应.使用curl发送的请求会被接受,因此我将它们与通过RestTemplate发送的请求进行了比较.特别是,Spring请求具有标题Connection,Content-Type和Content-Length,而curl请求则没有.如何配置Spring不添加它们?

最佳答案
实际上这可能不是问题所在.我的猜测是你没有指定正确的消息转换器.但这是一种删除标题的技术,以便您可以确认:

1.创建自定义ClientHttpRequestInterceptor实现:

public class CustomHttpRequestInterceptor implements ClientHttpRequestInterceptor
{

   @Override
   public ClientHttpResponse intercept(HttpRequest request,byte[] body,ClientHttpRequestExecution execution) throws IOException
   {
        HttpHeaders headers = request.getHeaders();
        headers.remove(HttpHeaders.CONNECTION);
        headers.remove(HttpHeaders.CONTENT_TYPE);
        headers.remove(HttpHeaders.CONTENT_LENGTH);

        return execution.execute(request,body);
    }

}

2.然后将其添加到RestTemplate的拦截器链:

@Bean
public RestTemplate restTemplate()
{

   RestTemplate restTemplate = new RestTemplate();
   restTemplate.setInterceptors(Arrays.asList(new CustomHttpRequestInterceptor(),new LoggingRequestInterceptor()));

   return restTemplate;
}

猜你在找的Spring相关文章