Java 将代理设置为系统属性不起作用

Java 将代理设置为系统属性不起作用,java,proxy,pac,Java,Proxy,Pac,我正在尝试设置应用程序中使用的代理。当我尝试将其设置为系统属性时: Proxy proxy = ... // code to retrieve proxy from .pac file InetSocketAddress addr = (InetSocketAddress) proxy.address(); System.setProperty("java.net.useSystemProxies", "true"); System.setProperty("http.proxyHost", a

我正在尝试设置应用程序中使用的代理。当我尝试将其设置为系统属性时:

Proxy proxy = ... // code to retrieve proxy from .pac file
InetSocketAddress addr = (InetSocketAddress) proxy.address();
System.setProperty("java.net.useSystemProxies", "true");
System.setProperty("http.proxyHost", addr.getHostName());
System.setProperty("http.proxyPort", Integer.toString(addr.getPort()));
它抛出java.net.ConnectException:连接超时:尝试连接到URL时连接:

URL url = new URL(urlToConnect);
HttpsURLConnection httpsConnection = (HttpsURLConnection) url.openConnection(); // Exception thrown in this line
但是,如果我将代理设置为openConnection的参数:

我的代码可以工作,并且我可以连接到URL,但是这个解决方案是不可行的,因为我的代码中有很多openConnection


当将其用作系统属性时,如何使其工作?

我尝试访问的URL是https,我正在设置http.proxyHost和http.proxyPort。将其更改为https.proxyHost和https.proxyHost后,效果良好

我尝试访问的URL是https,我正在设置http.proxyHost和http.proxyPort。将其更改为https.proxyHost和https.proxyHost,成功了

您是否尝试使用引发异常的相同url从浏览器建立连接?是。。根据:在最近的Windows系统和Gnome 2.x系统上,可以告诉java.net堆栈,将此属性设置为true,以使用系统代理设置。这两个系统都允许您通过其用户界面全局设置代理。请注意,此属性在启动时仅检查一次。你是在Windows还是Gnome 2.x上?如果没有,听起来您不能使用该属性。如果是,则在命令行上而不是在代码中设置属性。是否尝试使用引发异常的相同url从浏览器建立连接?是。。根据:在最近的Windows系统和Gnome 2.x系统上,可以告诉java.net堆栈,将此属性设置为true,以使用系统代理设置。这两个系统都允许您通过其用户界面全局设置代理。请注意,此属性在启动时仅检查一次。你是在Windows还是Gnome 2.x上?如果没有,听起来您不能使用该属性。如果是,则在命令行上而不是在代码中设置该属性。
HttpsURLConnection httpsConnection = (HttpsURLConnection) url.openConnection(proxy);