HttpClient的基本使用


HttpClient的使用步驟:

  • 創建一個Http客戶端(可以進行個性化配置)
  • 創建請求(常見的get、post請求)
  • 客戶端發送請求,獲取響應內容,解析響應內容

一、創建Http客戶端

/**
 * 第一種方式
 * 靜態方法, 創建HTTP客戶端, 返回 CloseableHttpClient 實例
 * 本質上使用 HttpClientBuilder.create().build() 創建的(即下面要介紹到的第二種方法)
 */
CloseableHttpClient httpClient = HttpClients.createDefault();

 

/**
 * 第二種方式:靈活可配置
 */
//調用的是 HttpClientBuilder.create();
HttpClientBuilder httpClientBuilder = HttpClients.custom();
/**
 * 使用 HttpClientBuilder 可以進行個性化配置,后面單獨地詳細說
 */
//創建http客戶端
CloseableHttpClient httpClient = httpClientBuilder.build();

二、創建請求

/**
* 第一種方式
*    HttpGet和 HttpPost都實現了 HttpUriRequest接口, 本質上與第二種方式效果是一致的
*    可以調用實例方法進行個性化設置,這個后面再詳細地講解
*/
HttpGet httpGet = new HttpGet("https://www.baidu.com/");
HttpPost httpPost = new HttpPost("https://www.baidu.com/");

 

/**
 * 第二種方式
 *    借助 RequestBuilder 完成
 */
RequestBuilder requestBuilder = RequestBuilder.get().setUri("https://www.baidu.com/");
/**
 * RequestBuilder的實例方法可以對請求進行個性化配置,效果等同於第一種方式的HttpGet或HttpPost的實例方法
 */
HttpUriRequest httpGet = requestBuilder.build();

三、解析響應內容

//創建 http 客戶端
HttpClientBuilder httpClientBuilder = HttpClients.custom();
CloseableHttpClient httpClient = httpClientBuilder.build();
//創建 請求
RequestBuilder requestBuilder = RequestBuilder.get().setUri("https://www.baidu.com/");
HttpUriRequest httpGet = requestBuilder.build();
//獲取響應對象
CloseableHttpResponse response = null;
try {
    response = httpClient.execute(httpGet);
    //獲取響應狀態行,進而獲取響應狀態碼
    int statusCode = response.getStatusLine().getStatusCode();
    System.out.println("狀態碼:" + statusCode);

    //獲取響應的MIME類型
    String contentMimeType = ContentType.getOrDefault(response.getEntity()).getMimeType();
    System.out.println("媒體類型:" + contentMimeType);

    //獲取響應的內容,這里只演示簡單的文本內容,實際開發中並不總是這么簡單,后面詳細地講解
    String bodyAsString = EntityUtils.toString(response.getEntity(),"UTF-8");
    System.out.println("響應內容:" + bodyAsString);
} catch (IOException e) {
    e.printStackTrace();
}finally {
    //關閉響應
    if(null != response){
        try {
            response.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //釋放連接
    if(null != httpGet){
        httpGet.abort();
    }
    //關閉客戶端
    if(null != httpClient){
        try {
            httpClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 注:這里要記得關閉相關的資源,一般放在finally里面。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM