我正在寻找如何在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意味着,我直接坐在互联网上。但这是错的。我落后于代理人。我无法为我的电脑获得解决方案。
答案 0 :(得分:6)
正如我们在评论中所讨论的,代理设置仅适用于您使用的某些浏览器。
如果您希望Java使用相同的设置,您需要手动将其放入java网络设置(有关详细信息,请查看this网页)。
答案 1 :(得分:2)
感谢Dacwe。问题是,浏览器不使用任何系统代理,但它使用脚本设置代理自身。因此,系统中没有任何代理,Java无法访问它们。