温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java网络代理怎么配置

发布时间:2026-09-13 00:05:35 来源:亿速云 阅读:104 作者:小樊 栏目:编程语言

在 Java 中配置网络代理,常见有几种方式,取决于你是全局 JVM 代理、某个连接代理,还是框架/库(如 Spring、OkHttp)代理。下面系统讲一下。


一、JVM 全局代理(最常用)

1️⃣ 通过启动参数配置(推荐)

在启动 Java 程序时加参数:

java \
-Dhttp.proxyHost=127.0.0.1 \
-Dhttp.proxyPort=8080 \
-Dhttps.proxyHost=127.0.0.1 \
-Dhttps.proxyPort=8080 \
-Dhttp.nonProxyHosts="localhost|127.0.0.1" \
-jar app.jar

说明:

  • http.proxyHost / http.proxyPort:HTTP 代理
  • https.proxyHost / https.proxyPort:HTTPS 代理
  • http.nonProxyHosts:不走代理的地址(用 | 分隔)

2️⃣ 在代码中配置(全局)

System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "8080");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8080");

⚠️ 注意:

  • 必须在建立网络连接前设置
  • 对 HttpURLConnection 生效

二、只对单个连接设置代理(推荐用于精细控制)

使用 Proxy 类

import java.net.*;

URL url = new URL("https://example.com");
Proxy proxy = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("127.0.0.1", 8080)
);

HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
conn.connect();

支持类型:

  • Proxy.Type.HTTP
  • Proxy.Type.SOCKS

三、SOCKS 代理配置

JVM 参数方式

-DsocksProxyHost=127.0.0.1
-DsocksProxyPort=1080

代码方式

System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "1080");

或:

Proxy proxy = new Proxy(
    Proxy.Type.SOCKS,
    new InetSocketAddress("127.0.0.1", 1080)
);

四、带认证的代理(用户名密码)

Java 默认不支持代理认证,需要自定义 Authenticator:

Authenticator.setDefault(new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(
            "username",
            "password".toCharArray()
        );
    }
});

⚠️ 只对 HttpURLConnection 有效


五、常见框架代理配置

✅ OkHttp

Proxy proxy = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("127.0.0.1", 8080)
);

OkHttpClient client = new OkHttpClient.Builder()
    .proxy(proxy)
    .build();

✅ Apache HttpClient

HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");
RequestConfig config = RequestConfig.custom()
    .setProxy(proxy)
    .build();

✅ Spring RestTemplate

SimpleClientHttpRequestFactory factory =
    new SimpleClientHttpRequestFactory();

Proxy proxy = new Proxy(
    Proxy.Type.HTTP,
    new InetSocketAddress("127.0.0.1", 8080)
);
factory.setProxy(proxy);

RestTemplate restTemplate = new RestTemplate(factory);

六、常见问题

❓ 代理不生效?

  • 是否在连接前配置
  • HTTPS 是否单独设置 https.proxyHost
  • 是否被 nonProxyHosts 拦截

❓ Docker / 容器?

  • 在容器启动参数中配置
  • 或代码中显式设置

如果你能告诉我:

  • ✅ 用的是 HttpURLConnection / OkHttp / HttpClient
  • ✅ HTTP / HTTPS / SOCKS
  • ✅ 是否需要账号密码

我可以给你更精确的配置示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手