使用spring-boot指定http代理

jax*_*jax 4 spring-boot

如何在运行spring-boot fat war作为tomcat服务器时指定要使用的http代理?

我试过以下哪个不行.

java -jar my-application.war --http.proxyHost=localhost --http.proxyPort=3128 --https.proxyHost=localhost --https.proxyPort=3128
Run Code Online (Sandbox Code Playgroud)

java -jar my-application.war -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128
Run Code Online (Sandbox Code Playgroud)

小智 9

我发现我需要-Dhttps.proxySet = true才能实际使用代理配置.


Hos*_*een 7

将 JVM 选项放在-jar. 这应该有效:

java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=3128 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=3128 -jar my-application.war

解释

根据java command-line documentation,命令的语法是:

java [ options ] -jar file.jar [ arguments ]

argumentsargs那会在你收到main(String[] args)。因此,以某种方式使用它们完全是您的责任。如果您将它们转发给 spring using SpringApplication.run(MyApplication.class, args);,那么您需要找到说明 spring 如何args在该run方法中使用的文档。

options,但是,不会发送到您的应用程序。它们的用途之一是system properties使用-Dproperty=value. 根据Java 网络和代理,设置,例如,http.proxyHost属性使 JVM 代理您通过该主机的所有 http 请求。