如何通过 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
Content-Type
Access-Token
但 Feign 也以某种方式添加了 Content-Length。
有什么配置需要设置吗?
其实是个误会,上面的配置一直有效,是我没有正确解析错误。返回的错误实际上来自 api。
我所要做的就是正确指定错误解码器。
我尝试通过配置添加自定义 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
Content-Type
Access-Token
但 Feign 也以某种方式添加了 Content-Length。
有什么配置需要设置吗?
其实是个误会,上面的配置一直有效,是我没有正确解析错误。返回的错误实际上来自 api。
我所要做的就是正确指定错误解码器。