1. 程式人生 > >HttpClient學習(一)—— 基本使用

HttpClient學習(一)—— 基本使用

creat 編程工具 sea httpget print 連接超時 -c iba ava

HttpClient是支持Http協議的客戶端編程工具包。

簡單使用

引入依賴


    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.5.5</version>
    </dependency>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.47</version>
    </dependency>

一個簡單的Get請求


public static void main(String[] args) {
        //創建HttpClient實例
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //創建HttpGet實例
        HttpGet httpGet = new HttpGet("http://www.baidu.com");
        CloseableHttpResponse response = null;
        //執行Get請求
        try {
            response = httpClient.execute(httpGet);
            //獲取實體
            HttpEntity httpEntity = response.getEntity();
            //解析實體
            System.out.println(EntityUtils.toString(httpEntity,"utf-8"));
            response.close();
            httpClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

Post請求、請求頭、請求參數

使用代理

設置超時時間

HttpClient內部有三個超時時間設置:連接池獲取可用連接超時,連接超時,讀取數據超時

先連接,後讀取。

RequestConfig requestConfig = RequestConfig.custom()  
        //從連接池中獲取連接的超時時間  
        .setConnectTimeout(5000)
        //httpclient會創建一個異步線程用以創建socket連接,此處設置該socket的連接超時時間  
        .setConnectionRequestTimeout(1000)  
        //socket讀數據超時時間:從服務器獲取響應數據的超時時間
        .setSocketTimeout(5000)
        .build();  
httpGet.setConfig(requestConfig);  

參考文檔

HttpClient源碼解析系列:第二篇:極簡版實現
HttpClient官網 Quick Start

參考視頻

一頭紮進HttpClient

HttpClient學習(一)—— 基本使用