Java 从默认http客户端设置的openfeign请求集中删除头
我正在调用一个API,它将某些HttpHeader(包括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
Content Length
)列入黑名单,这似乎是由HttpClient在spring openfeign下面预设的。
为了正确地接收API响应,我需要删除内容长度
标题
已尝试了以下变通办法:
- 我尝试使用可用的外部注释
,@Headers
将标题设置为null或空字符串@RequestHeaders
- 我实现了一个
,它创建可用(不可变)头映射的副本,删除黑名单头并将映射设置为RequestInterceptor
。但只能添加新的标题,而不能修改可用的标题(看起来确实是不可变的;)requestTemplate.headers(newHeaders)
- 我研究过覆盖使用过的HttpClient,但直到现在都没有成功
提前谢谢 如果存在请求主体,则包含在
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没有按照标准开发。。。