我尝试通过配置添加自定义HttpClient:
@Bean
public CloseableHttpClient httpClient() {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(15000)
.setConnectionRequestTimeout(15000)
.build();
Header header = new BasicHeader("Test", "Test");
Collection<Header> headers =Arrays.asList(header);
return HttpClients.custom()
.setDefaultRequestConfig(requestConfig)
.setDefaultHeaders(headers)
.build();
}
但仍然,我的自定义添加的默认标头未出现在请求中。
我的Feign客户端界面如下所示:
@FeignClient(name = "example",
url = "${client.example.api}",
decode404 = false,
configuration = FeignClientConfiguration.class)
public interface ExampleFeignProxy{
@PostMapping(path = "/create")
@Headers("Content-Type: application/json")
String Create(
@RequestBody ExampleDTO exampleDto,
@RequestHeader("access-token") String token);
}
但是当我向Create
方法发出请求时,请求失败,当我检查configuration.errordecoder内部时,它表明feign在请求中也添加了额外的标头Content-Length
。
如何从伪装客户端中的所有方法中删除默认标头?
为了清楚起见-如上所示,请求对象上应该只有两个标头
内容类型
访问令牌
但是Feign以某种方式也增加了Content-Length。
我需要设置某个配置吗?
答案 0 :(得分:0)
实际上,这是一个误解,以上配置始终有效,我没有正确解析错误。返回的错误实际上是来自api。
我要做的就是正确地指定errordecoder。