【问题标题】:Setting proxy as System properties not working将代理设置为系统属性不起作用
【发布时间】:2016-11-11 07:02:02
【问题描述】:

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

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()));

当我尝试连接到 URL 时,它会抛出 java.net.ConnectException: Connection timed out: connect

URL url = new URL(urlToConnect);
HttpsURLConnection httpsConnection = (HttpsURLConnection) url.openConnection(); // Exception thrown in this line

但是,如果我将代理设置为openConnection()的参数:

HttpsURLConnection httpsConnection = (HttpsURLConnection) url.openConnection(proxy); 

我的代码可以正常工作并且我能够连接到 URL,但是这个解决方案是不切实际的,因为我的代码中有很多 openConnection()

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

【问题讨论】:

  • 您是否尝试与抛出异常的相同 url 的浏览器建立连接?
  • 是的..它工作正常@MSach
  • 网址是http还是https?
  • 根据docs在最近的 Windows 系统和 Gnome 2.x 系统上,可以告诉 java.net 堆栈,将此属性设置为 true,以使用系统代理设置(这两个系统都允许您通过其用户界面全局设置代理)。请注意,此属性仅在启动时检查一次。 您使用的是 Windows 还是 Gnome 2.x?如果没有,听起来你不能使用该属性。如果是,请在命令行上设置属性,而不是在代码中。

标签: java proxy pac


【解决方案1】:

我尝试访问的 URL 是 https,我设置了 http.proxyHosthttp.proxyPort。将其更改为https.proxyHosthttps.proxyHost,它工作了

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 2014-02-04
    • 2011-05-18
    相关资源
    最近更新 更多