微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐