1. 程式人生 > >《HttpClient官方文件》1.2 HttpClient 介面

《HttpClient官方文件》1.2 HttpClient 介面

原文連結

1.2. HttpClient 介面

HttpClient 介面表示最基本的HTTP請求執行要約。它不會對請求執行過程加上約束或一些特定的資訊,並且保留連線管理,狀態管理,認證和處理重定向的細節到各自的實現中。這會使它更方便的使用額外功能來裝飾介面,如響應內容快取。

通常來說, HttpClient介面的實現負責處理特定方面的HTTP協議,比如重定向、身份認證處理、對連線的永續性和維持連線存活長短的決策之類的多個處理程式和策略介面實現的門面。 這使得使用者能夠有選擇性的將一些自定義的,基於特定應用的實現來替換預設的。

ConnectionKeepAliveStrategy keepAliveStrat = new DefaultConnectionKeepAliveStrategy() {

    @Override
    public long getKeepAliveDuration(
            HttpResponse response,
            HttpContext context) {
        long keepAlive = super.getKeepAliveDuration(response, context);
        if (keepAlive == -1) {
            // Keep connections alive 5 seconds if a keep-alive value
            // has not be explicitly set by the server
            keepAlive = 5000;
        }
        return keepAlive;
    }

};
CloseableHttpClient httpclient = HttpClients.custom()
        .setKeepAliveStrategy(keepAliveStrat)
        .build();

1.2.1. HttpClient 執行緒安全

HttpClient 介面的實現是執行緒安全的。建議執行多次請求都使用該類的同一個例項。

1.2.2. HttpClient 資源重分配

CloseableHttpClient類的一個例項不再被呼叫或即將超出連線管理器關聯的範圍時, 必須通過呼叫CloseableHttpClient#close()方法來關閉它

CloseableHttpClient httpclient = HttpClients.createDefault();
try {
    <...>
} finally {
    httpclient.close();
}