java - 将 JVM/JRE 设置为自动使用 Windows 代理

标签 java proxy jvm

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

这是我的问题的演示:

  1. Go to your Control Panel->Java and set a proxy address.
  2. Run the following simple applet code (I'm using the 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);
    }
}

Applet 显示“NONE”,与您在 Java 控制面板中放置的设置无关。如果我可以确定 Windows 代理设置(通常在 Internet Explorer 中设置),但在 Java 控制面板中执行额外的配置步骤仍然是可接受的解决方案,那么最好的办法是。

谢谢!

最佳答案

可以使用 ProxySelector 检测代理。通过使用 setProperty method of the System class 分配环境变量来分类并分配系统代理。 :

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

关于java - 将 JVM/JRE 设置为自动使用 Windows 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/376101/

相关文章:

grails - 如何在Grails Controller 中获取原始二进制内容

windows - 通过命令行通过 SOCKS5 代理打开 putty ssh 连接

java - 是否有折叠丰富的事件 :tree node?

java - 使用 Wicket 作为 REST API

java - Struts + hibernate : large memory consumption arise during reading big data arrays

java - 什么会导致 java 进程大大超过 Xmx 或 Xss 限制?

jvm - Java对象的大小

java - 如何在组级别实现ACL?例如。只有 A 学校的老师可以更新 A 学校的日历

c++ - 如何为 HTTP 代理服务器设置超时(不是连接超时)

java - 无法识别的选项 : - Could not create the Java virtual machine