閱讀604 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《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();
}

 轉載自 並發編程網 - ifeve.com

最後更新:2017-05-19 13:32:28

  上一篇:go  《雲數據管理:挑戰與機遇》2.2 P2P係統
  下一篇:go  2017大數據版圖最新發布:新趨勢和新玩家