Java 从默认http客户端设置的openfeign请求集中删除头

Java 从默认http客户端设置的openfeign请求集中删除头,java,spring-boot,spring-cloud-feign,feign,Java,Spring Boot,Spring Cloud Feign,Feign,我正在调用一个API,它将某些HttpHeader(包括Content Length)列入黑名单,这似乎是由HttpClient在spring openfeign下面预设的。 为了正确地接收API响应,我需要删除内容长度标题 已尝试了以下变通办法: 我尝试使用可用的外部注释@Headers,@RequestHeaders将标题设置为null或空字符串 我实现了一个RequestInterceptor,它创建可用(不可变)头映射的副本,删除黑名单头并将映射设置为requestTemplate.h

我正在调用一个API,它将某些HttpHeader(包括
Content Length
)列入黑名单,这似乎是由HttpClient在spring openfeign下面预设的。 为了正确地接收API响应,我需要删除
内容长度
标题

已尝试了以下变通办法:

  • 我尝试使用可用的外部注释
    @Headers
    @RequestHeaders
    将标题设置为null或空字符串
  • 我实现了一个
    RequestInterceptor
    ,它创建可用(不可变)头映射的副本,删除黑名单头并将映射设置为
    requestTemplate.headers(newHeaders)
    。但只能添加新的标题,而不能修改可用的标题(看起来确实是不可变的;)
  • 我研究过覆盖使用过的HttpClient,但直到现在都没有成功
遇到的错误/问题:

我调用的API根据它们的头模式验证返回400

代码:

如果需要任何代码片段,我很乐意提供它们,但对我来说,这个问题似乎与任何代码问题无关,因为我没有遇到任何异常


提前谢谢

如果存在请求主体,则包含在
feign-httpclient
中的Apache Http客户端将始终设置内容长度头。解决此问题的一种方法是直接配置Apache客户端,并通过构建器将其提供给Faign:

此自定义客户端可以应用一个Apache Http客户端拦截器,该拦截器允许您在请求离开外部之后和Apache发送之前修改请求。查看更多信息

公共类示例{
公共静态void main(字符串[]args){
HttpClient-HttpClient=HttpClients.custom.build();
GitHub GitHub=Feign.builder()
.客户(新ApacheHttpClient(httpClient))
.target(GitHub.class)https://api.github.com");
}
}

我也试过了。不幸的是,
内容长度
也将由ApacheClient添加。同时,我认为,当有请求机构时,它总是被添加到请求中。老实说,对我来说,这是所有请求的有效行为,我会责怪生产者API没有按照标准开发。。。