设置JVM / JRE以自动使用Windows代理

我确实看到了有关为JVM设置代理的问题,但我想问的是人们如何利用已经配置的代理(在Windows上)。

这是我的问题的演示:

  1. 转到控制面板-> Java并设置代理地址。
  2. 运行以下简单的小程序代码(我正在使用Eclipse IDE):

import java.awt.Graphics;

import javax.swing.JApplet;

import java.util.*;

public class Stacklet extends JApplet {

private String message;

public void init(){

Properties props = System.getProperties();

message = props.getProperty("http.proxyHost", "NONE");

message = (message.length() == 0)? "NONE": message;

}

public void paint(Graphics g)

{

g.drawString(message, 20, 20);

}

}

无论您在Java控制面板中进行的设置如何,Applet均显示“无”。如果可以确定Windows代理设置(通常在Internet Explorer中设置),那将是最好的选择,但是在Java控制面板中进行额外的配置步骤仍然是可以接受的解决方案。

谢谢!

回答:

可以使用ProxySelector类检测代理,并通过使用System类的setProperty方法分配环境变量来分配系统代理:

System.setProperty("java.net.useSystemProxies", "true");

System.out.println("detecting proxies");

List l = null;

try {

l = ProxySelector.getDefault().select(new URI("http://foo/bar"));

}

catch (URISyntaxException e) {

e.printStackTrace();

}

if (l != null) {

for (Iterator iter = l.iterator(); iter.hasNext();) {

java.net.Proxy proxy = (java.net.Proxy) iter.next();

System.out.println("proxy type: " + proxy.type());

InetSocketAddress addr = (InetSocketAddress) proxy.address();

if (addr == null) {

System.out.println("No Proxy");

} else {

System.out.println("proxy hostname: " + addr.getHostName());

System.setProperty("http.proxyHost", addr.getHostName());

System.out.println("proxy port: " + addr.getPort());

System.setProperty("http.proxyPort", Integer.toString(addr.getPort()));

}

}

}

以上是 设置JVM / JRE以自动使用Windows代理 的全部内容, 来源链接: utcz.com/qa/420651.html

回到顶部