文章目錄
- 1. 概述
- 2. 生態位
1. 概述
早期的Java想要實現HTTP客戶端需要借助URL/URLConnection或者自己手動從Socket開始編碼,需要處理大量HTTP協議的具體細節,不但繁瑣還容易出錯。 Apache Commons HttpClient的誕生就是為了解決這個問題,它正是我們看到的Apache HttpComponents的前生。 Apache HttpComponents將Apache Commons HttpClient進一步做職責劃分,將項目分成3個部分:
模塊 | 說明 |
---|---|
HttpCore | HTTP協議解析、生成器的實現 |
HttpClient | 提供基于BIO的HTTP客戶端,適用于大數據量傳輸的請求 |
Async HttpClient | 提供基于NIO的HTTP客戶端實現,適用于高并發的客戶端請求 |
2. 生態位
- 早期的Java通過HttpURLConnection提供,支持有限的功能,使用復雜。
- Java 11開始提供了自帶HttpClient但是并不支持文件傳輸,大大限制了使用場景,而且國內很多公司還停留在Java 8,這也嚴重制約了它的發展和流行。
- 因為出現的早,HttpComponents最廣泛被采用的。成也蕭何敗蕭何,早期的API略顯迂腐,用起來并不是很舒服。
- OkHttp是目前使用體驗最好的一個類庫,如果是新項目推薦優先使用。
下面的圖是國外碼農對現有常見類庫的評測,選擇的時候可以根據自己的使用場景確認是否符合需求。