在 Java 中配置网络代理通常用于让 Java 程序通过代理服务器访问网络(如 HTTP、HTTPS、SOCKS 等)。下面按常见场景系统说明。
java -Dhttp.proxyHost=127.0.0.1 \
-Dhttp.proxyPort=8080 \
-Dhttps.proxyHost=127.0.0.1 \
-Dhttps.proxyPort=8080 \
-jar yourapp.jar
-Dhttp.nonProxyHosts="localhost|127.0.0.1|*.example.com"
注意:
nonProxyHosts用|分隔,不是逗号
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");
System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
⚠️ 必须在建立网络连接之前设置。
import java.net.*;
URL url = new URL("http://example.com");
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("127.0.0.1", 8080)
);
URLConnection conn = url.openConnection(proxy);
Proxy proxy = new Proxy(
Proxy.Type.SOCKS,
new InetSocketAddress("127.0.0.1", 1080)
);
import java.net.*;
import java.net.http.*;
ProxySelector selector = ProxySelector.of(
new InetSocketAddress("127.0.0.1", 8080)
);
HttpClient client = HttpClient.newBuilder()
.proxy(selector)
.build();
Authenticator authenticator = new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"username",
"password".toCharArray()
);
}
};
Authenticator.setDefault(authenticator);
| 类型 | Java 支持 |
|---|---|
| HTTP | ✅ |
| HTTPS | ✅ |
| SOCKS4/5 | ✅ |
| 透明代理 | ❌(系统级) |
-Djava.net.debug=all
或只调试网络:
-Djava.net.debug=net,proxy
system:
http:
proxyHost: 127.0.0.1
proxyPort: 8080
或 JVM 参数方式最稳妥。
如果你有以下需求,我可以给你具体示例:
告诉我你的使用场景即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。