【JAVA】如何使用HttpClient發起HTTP請求?

1.HttpClient是什麼?

HttpClient是apache爲了解決原生Java.net包不易用,開發的一款簡單易用的工具。
httpclient的思維導圖

2.HttpClient使用步驟

在這裏插入圖片描述

  1. 創建HttpClientBuilder:可以通過HttpClients / HttpClientBuilder,使用custom()返回對象進行自定義配置,使用createDefault()等等返回不同配置的HttpClientBuilder對象。實際上HttpClients背地裏調用的就是HttpClientBuilder,HttpClients作爲一個工具類。
  2. 創建HttpClient: 通過set配置,最後使用構建器build返回HttpClient。
  3. 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的文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章