在 Java 开发中,如果你要为 HTTP 请求配置 代理服务器(如使用代理 IP、端口、用户名密码等),可以根据你使用的 HTTP 客户端不同方式也不同。以下是几种常见场景:


✅ 1. 使用原生 HttpURLConnection

import java.io.InputStream;
import java.net.*;

public class ProxyExample {
    public static void main(String[] args) throws Exception {
        // 创建代理对象(HTTP 类型)
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("代理IP", 端口号));

        // 设置请求地址
        URL url = new URL("http://www.example.com");

        // 打开连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);

        // 可选:设置请求头等
        conn.setRequestMethod("GET");

        // 读取响应
        InputStream inputStream = conn.getInputStream();
        // 处理 inputStream...
    }
}

如:

new InetSocketAddress("127.0.0.1", 8888);

✅ 2. 使用 Apache HttpClient(常用于企业开发)

示例(HttpClient 4.x):

import org.apache.http.HttpHost;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;

public class ApacheProxyExample {
    public static void main(String[] args) throws Exception {
        // 创建代理主机
        HttpHost proxy = new HttpHost("代理IP", 端口号);

        // 设置代理路由
        DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);

        // 创建 HttpClient 并设置代理
        CloseableHttpClient httpClient = HttpClients.custom()
                .setRoutePlanner(routePlanner)
                .build();

        // 发起请求
        HttpGet request = new HttpGet("http://www.example.com");
        CloseableHttpResponse response = httpClient.execute(request);

        // 处理响应
        System.out.println("响应状态码:" + response.getStatusLine().getStatusCode());
    }
}

如果代理需要认证,还需要使用 CredentialsProvider 设置用户名和密码,示例我可以补充。


✅ 3. 使用 OkHttp(现代 Java 常用库)

import okhttp3.*;

import java.net.InetSocketAddress;
import java.net.Proxy;

public class OkHttpProxyExample {
    public static void main(String[] args) throws Exception {
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("代理IP", 端口号));

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

        Request request = new Request.Builder()
                .url("http://www.example.com")
                .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}

✅ 4. 全局设置(JVM 级别代理)

你还可以通过 JVM 参数为所有请求设置全局代理:

-Dhttp.proxyHost=代理IP -Dhttp.proxyPort=端口号
-Dhttps.proxyHost=代理IP -Dhttps.proxyPort=端口号

也可以在代码中设置:

System.setProperty("http.proxyHost", "代理IP");
System.setProperty("http.proxyPort", "端口号");

⛔ 注意事项:

  • HTTPS 请求用 https.proxyHost,HTTP 用 http.proxyHost

  • 某些情况下,代理服务器还需要用户名密码(可单独补充示例)

  • 如果代理需要跳过某些域名,可设置 http.nonProxyHosts


刚学java菜鸡,永劫无间蚀月,王者荣耀王者,金铲铲小铂金,第五人格菜鸡,原神开服玩家,星穹铁道菜鸡,崩坏的菜鸡,闪耀暖暖,和平精英,LOL,CSGO,以及三A大作收集者等等。。。