JAVA設定http請求代理

windheart心随风發表於2024-08-06

在使用Apache HttpClient 4.x系列時,如果您想為CloseableHttpClient設定代理,可以使用HttpClientBuilder類來構建客戶端,並透過setProxy方法設定代理。以下是如何設定代理的示例程式碼:

import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.HttpHost;

public class HttpClientWithProxyExample {
    public static void main(String[] args) {
        try {
            // 代理伺服器的主機名和埠
            String proxyHost = "your_proxy_host";
            int proxyPort = your_proxy_port; // 替換為你的代理埠號

            // 建立代理伺服器的HttpHost物件
            HttpHost proxy = new HttpHost(proxyHost, proxyPort);

            // 使用HttpClientBuilder建立HttpClient例項,並設定代理
            CloseableHttpClient httpClient = HttpClients.custom()
                    .setProxy(proxy)
                    .build();

            // 使用httpClient傳送請求...
            // 例如,傳送一個GET請求
            // HttpGet request = new HttpGet("http://www.example.com");
            // CloseableHttpResponse response = httpClient.execute(request);
            // 處理響應...

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在這個示例中,您需要將your_proxy_hostyour_proxy_port替換為您代理伺服器的實際主機名和埠號。如果您的代理伺服器需要認證,您可以使用AuthScopeUsernamePasswordCredentials來設定認證資訊:

import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.BasicCredentialsProvider;

// ...

// 如果代理需要認證
String proxyUsername = "your_proxy_username";
String proxyPassword = "your_proxy_password";

CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(
        new AuthScope(proxyHost, proxyPort),
        new UsernamePasswordCredentials(proxyUsername, proxyPassword)
);

CloseableHttpClient httpClient = HttpClients.custom()
        .setProxy(proxy)
        .setDefaultCredentialsProvider(credsProvider)
        .build();

請注意,上面的程式碼示例使用了Apache HttpClient 4.x版本。如果您使用的是其他版本的HttpClient,API呼叫可能會有所不同。

相關文章