在使用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_host
和your_proxy_port
替換為您代理伺服器的實際主機名和埠號。如果您的代理伺服器需要認證,您可以使用AuthScope
和UsernamePasswordCredentials
來設定認證資訊:
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呼叫可能會有所不同。