如何通过 Feign 使用自定义 ApacheHttpClient?

How to use custom ApacheHttpClient with Feign?

我尝试通过配置添加自定义 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();
 }

但是,我自定义添加的默认值 header 仍然没有出现在请求中。

我的 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 也在添加额外的 header Content-Length到请求。 我怎样才能从我的 feign 客户端中的所有方法中删除默认的 headers?

为了清楚起见 - 如上所示,请求中应该只有两个 header object

但 Feign 也以某种方式添加了 Content-Length。

有什么配置需要设置吗?

其实是个误会,上面的配置一直有效,是我没有正确解析错误。返回的错误实际上来自 api。

我所要做的就是正确指定错误解码器。