首页 > 解决方案 > 从默认http客户端设置的openfeign请求中删除标头

问题描述

我正在调用一个 API,它将某些 HttpHeaders 列入黑名单,包括Content-Length似乎由 spring-openfeign 下的 HttpClient 预设的。要正确接收 API 响应,我需要删除Content-Length标头。

已尝试以下解决方法:

遇到的错误/问题:

我正在调用的 API 根据其标头架构验证返回 400。

代码:

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

提前致谢!!

标签: javaspring-bootspring-cloud-feignfeign

解决方案


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

这个自定义客户端可以应用 Apache Http Client 拦截器,允许您在请求离开 Feign 之后和 Apache 发送之前修改请求。查看他们的 javadoc以获取更多信息。

public class Example {
  public static void main(String[] args) {
    HttpClient httpClient = HttpClients.custom.build();
    GitHub github = Feign.builder()
                     .client(new ApacheHttpClient(httpClient))
                     .target(GitHub.class, "https://api.github.com");
  }
}

推荐阅读