在 Java 中设置网络代理有多种方式,主要取决于你使用的是 JVM 全局代理、HTTP 连接(HttpURLConnection)、还是 第三方库(如 Apache HttpClient、OkHttp)。下面按常见场景说明。
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" \
MyApp
说明:
http.proxyHost / http.proxyPort:HTTP 代理https.proxyHost / https.proxyPort:HTTPS 代理http.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");
⚠️ 注意:必须在建立网络连接前设置。
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("127.0.0.1", 8080)
);
URL url = new URL("https://example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
"username",
"password".toCharArray()
);
}
});
HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");
RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
CloseableHttpClient client = HttpClients.custom()
.setDefaultRequestConfig(config)
.build();
CredentialsProvider creds = new BasicCredentialsProvider();
creds.setCredentials(
new AuthScope("127.0.0.1", 8080),
new UsernamePasswordCredentials("user", "pass")
);
CloseableHttpClient client = HttpClients.custom()
.setDefaultCredentialsProvider(creds)
.build();
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("127.0.0.1", 8080)
);
OkHttpClient client = new OkHttpClient.Builder()
.proxy(proxy)
.build();
Authenticator proxyAuthenticator = (route, response) ->
response.request().newBuilder()
.header("Proxy-Authorization",
Credentials.basic("user", "pass"))
.build();
OkHttpClient client = new OkHttpClient.Builder()
.proxy(proxy)
.proxyAuthenticator(proxyAuthenticator)
.build();
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)
);
https.proxyHostnonProxyHosts如果你能说明:
我可以给你更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。