带有 feign 的 Java spring boot 忽略代理设置。 像这样启动应用程序:
"C:\Program Files\Zulu\zulu-8\bin\java.exe" -DproxySet=true -Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8888 "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.1\lib\idea_rt.jar=58189:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.1.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\me\AppData\Local\Temp\classpath603637298.jar com.me.myproj.Main
当假客户端调用第三方服务时,会忽略代理设置(在我的例子中是 Charles 代理)并直接进行。
注意:它的 spring boot 2.0.3 和 java 8
@EnableFeignClients
@FeignClient(value="some-api", url="${client.some-api}")
public interface SomeApi {
@GetMapping(value = "/someurl", consumes = "application/json")
public String getSomething(@PathVariable("eventId") String eventId);
}
我们的 application.yml 看起来像这样:
feign:
client:
config:
default:
connectTimeout: ${FEIGN_CONNECT_TIMEOUT:180000}
readTimeout: ${FEIGN_READ_TIMEOUT:180000}
loggerLevel: full
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
我认为您使用了错误的代理设置。 对于 FeignClient 你应该使用
-Dfeign.httpclient.enabled=true
-Dfeign.httpclient.proxy.host=proxy.example.com
-Dfeign.httpclient.proxy.port=8080