【发布时间】:2011-08-20 01:56:53
【问题描述】:
我正在寻找如何在 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 意味着,我直接位于互联网上。但这是错误的。我在代理后面。我无法为我的计算机找到解决方案。
【问题讨论】:
-
首先检查windows是否真的知道你的代理:
netsh winhttp show proxy(这列出了java在你的例子中使用的系统范围的代理) -
上面写着
Following command was not found: winhttp -
那你怎么知道你在代理后面呢?它是http代理吗?你的浏览器里有吗?
-
是的,我愿意。浏览器(MSIE 甚至 Firefox)使用脚本进行自动设置。可能是这个原因吗? MSIE 与 Windows 紧密相连,但设置很可能仅适用于浏览器,而不适用于整个环境。
-
没错!它只是用于浏览器。
标签: java networking proxy