如何从Java中的系统设置获取代理设置

时间:2011-05-06 10:21:16

标签: java networking proxy

我正在寻找如何在Windows下使用Java获取系统代理信息的方式,但我发现只有一种方法。但它对我不起作用。

public static void main(String[] args) throws Throwable {
  System.setProperty("java.net.useSystemProxies", "true");
  System.out.println("detecting proxies");
  List<Proxy> pl = ProxySelector.getDefault().select(new URI("http://ihned.cz/"));
  for (Proxy p : pl)
    System.out.println(p);
  Proxy p = null;
  if (pl.size() > 0) //uses first one
    p = pl.get(0);
  System.out.println(p.address());
  System.out.println("Done");
}

当我运行程序时,我得到:

detecting proxies
DIRECT
null
Done

Java意味着,我直接坐在互联网上。但这是错的。我落后于代理人。我无法为我的电脑获得解决方案。

2 个答案:

答案 0 :(得分:6)

正如我们在评论中所讨论的,代理设置仅适用于您使用的某些浏览器。

如果您希望Java使用相同的设置,您需要手动将其放入java网络设置(有关详细信息,请查看this网页)。

答案 1 :(得分:2)

感谢Dacwe。问题是,浏览器不使用任何系统代理,但它使用脚本设置代理自身。因此,系统中没有任何代理,Java无法访问它们。