1.HttpClient是什麼?
HttpClient是apache爲了解決原生Java.net包不易用,開發的一款簡單易用的工具。
2.HttpClient使用步驟
- 創建HttpClientBuilder:可以通過HttpClients / HttpClientBuilder,使用custom()返回對象進行自定義配置,使用createDefault()等等返回不同配置的HttpClientBuilder對象。實際上HttpClients背地裏調用的就是HttpClientBuilder,HttpClients作爲一個工具類。
- 創建HttpClient: 通過set配置,最後使用構建器build返回HttpClient。
- HttpClient通過excute對應的request,返回結果response。
3.示例
(1)簡單示例
//簡單get請求
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
try {
HttpEntity entity1 = response1.getEntity(); //獲取響應體
EntityUtils.consume(entity1); //EntityUtils工具類
} finally {
response1.close();
}
//簡單post請求
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
EntityUtils.consume(entity2);
} finally {
response2.close();
}
(2)添加配置(代理、連接超時)
HttpHost proxy = new HttpHost(PROXY_IP, PROXY_PORT, "http");
System.out.println("【代理信息】ip:" + PROXY_IP + "port:" + PROXY_PORT);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(5000) //設置連接建立超時的時間
.setConnectionRequestTimeout(5000)
.setSocketTimeout(5000)
.setProxy(proxy) //設置代理
.setRedirectsEnabled(true).build();
httpGet.setConfig(requestConfig);
return EntityUtils.toString(httpClient.execute(httpGet).getEntity());
以上是HttpClient簡單的使用,圖一爲簡單的使用。圖二是我在做項目時,需要在內網集成阿里雲短信服務需要使用代理訪問阿里服務的使用。
ps:jdk11重寫了HttpClient,並希望替代這些第三方工具集,使用方法類似,也是通過構建器模式去設置。
參考Apache的文檔