65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 Java 使用代理进行 HTTP 请求

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2024 年 8 月 6 日

CPOL

1分钟阅读

viewsIcon

14732

一个简单的代码解决方案,演示如何使用 Java 通过代理发出 HTTP 请求

引言

在网络编程领域,通过代理服务器进行 HTTP 请求对于各种原因至关重要,包括网络爬虫、管理多个请求或提高匿名性。本文介绍了一个 Java 代码片段,演示了如何配置 HttpURLConnection 以通过具有基本身份验证的代理服务器路由请求。

使用代码

要使用此 Java 代码通过代理进行 HTTP 请求(具有基本身份验证)

  1. 更新配置:

    • 使用您的代理服务器详细信息设置 proxyHostproxyPortusernamepassword
    • url 变量修改为目标端点。
  2. 编译和运行:

    • 使用 javac Main.java 编译代码。
    • 使用 java Main 运行编译后的类。
  3. 关键组件:

    • 代理设置:通过 ProxyInetSocketAddress 配置。
    • 身份验证:使用 Base64 编码添加 Proxy-Authorization 标头。
    • 响应处理:使用 BufferedReader 读取并打印响应。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;
import java.util.Base64;

public class Main {
    public static void main(String[] args) throws Exception {
        try {
            String proxyHost = "us.swiftproxy.net";
            int proxyPort = 7878;
            Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort));
            String username = "username_custom_zone_us";
            String password = "password";
            String credentials = username + ":" + password;
            URL url = new URL("http://ipinfo.io");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);
            connection.setRequestMethod("GET");
            connection.setRequestProperty("Proxy-Authorization", "Basic " + Base64.getEncoder().encodeToString(credentials.getBytes()));
            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            System.out.println((response.toString()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

结论

此 Java 代码片段提供了一种通过具有基本身份验证的代理服务器进行 HTTP 请求的简单方法。通过使用适当的代理设置和身份验证标头配置 HttpURLConnection,您可以有效地管理网络请求,同时控制您的 IP 地址和访问凭据。无论您是在处理 IP 限制、进行研究还是管理多个帐户,这种方法都提供了一个实用的解决方案。为了增强安全性及功能,请务必小心处理敏感信息,并根据您的特定需求调整代理设置。

© . All rights reserved.