很多时候,Java应用程序需要连接到Internet。最常见的例子发生在读取XML文件并需要下载其模式时。
我在代理服务器后面。如何将JVM设置为使用代理?
很多时候,Java应用程序需要连接到Internet。最常见的例子发生在读取XML文件并需要下载其模式时。
我在代理服务器后面。如何将JVM设置为使用代理?
当前回答
将usesystemagents属性设置为true。例如,您可以通过JAVA_TOOL_OPTIONS环境变量来设置它。例如,在Ubuntu中,你可以在.bashrc中添加以下代码行:
export JAVA_TOOL_OPTIONS+=" - djava.net.usesystemagents =true"
其他回答
我认为配置WINHTTP也可以。
包括Windows更新在内的许多程序在代理后都有问题。通过设置WINHTTP总能解决这类问题
JVM使用代理进行HTTP调用
System.getProperties().put("http.proxyHost", "someProxyURL");
System.getProperties().put("http.proxyPort", "someProxyPort");
这可以使用用户设置代理
System.setProperty("java.net.useSystemProxies", "true");
这对我来说很管用:
public void setHttpProxy(boolean isNeedProxy) {
if (isNeedProxy) {
System.setProperty("http.proxyHost", getProxyHost());
System.setProperty("http.proxyPort", getProxyPort());
} else {
System.clearProperty("http.proxyHost");
System.clearProperty("http.proxyPort");
}
}
P/S:我基于GHad的回答。
如果你想要“Socks Proxy”,通知“socksProxyHost”和“socksProxyPort”虚拟机参数。
e.g.
java -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080 org.example.Main
综合Sorter和javabrett/Leonel的回答:
java -Dhttp.proxyHost=10.10.10.10 -Dhttp.proxyPort=8080 -Dhttp.proxyUser=username -Dhttp.proxyPassword=password -jar myJar.jar