1
我想獲得爲HttpClient對象設置代理的想法。我發現下面的代碼。當我爲HttpClient對象設置代理時會發生什麼?
HttpHost proxy = new HttpHost("proxy.com", 80, "http");
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
CloseableHttpClient httpclient = HttpClients.custom()
.setRoutePlanner(routePlanner)
.build();
而且下面的代碼,
/**
* How to send a request via proxy.
*
* @since 4.0
*/
public class ClientExecuteProxy {
public static void main(String[] args)throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpHost target = new HttpHost("httpbin.org", 443, "https");
HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");
RequestConfig config = RequestConfig.custom()
.setProxy(proxy)
.build();
HttpGet request = new HttpGet("/");
request.setConfig(config);
System.out.println("Executing request " + request.getRequestLine() + " to " + target + " via " + proxy);
CloseableHttpResponse response = httpclient.execute(target, request);
try {
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
System.out.println(EntityUtils.toString(response.getEntity()));
} finally {
response.close();
}
} finally {
httpclient.close();
}
}
}
有人能解釋爲什麼我們需要指定這樣的代理HttpClient的對象,以及如何在這兩種情況HttpClient的對象的行爲?
感謝您的回覆。 「在我看來,你仍然需要通過設置JVM代理選項來配置Java級代理細節。」請你詳細說明這個聲明。 – prime
您可以設置VM代理詳細信息,如: -Dhttp.proxyHost =主機名 -Dhttp.proxyPort =端口 – amitmah