Class HttpClientBuilder
java.lang.Object
io.leandev.appfuse.http.HttpClientBuilder
HTTP 客戶端建構器
提供 Fluent API 建構 Apache HttpClient 實例,支援:
- Timeout 配置(連線、請求、回應)
- 連線池配置(最大連線數、每路由最大連線數)
- SSL 憑證驗證控制
使用範例
```java // 基本使用 CloseableHttpClient client = HttpClientBuilder.create() .setTimeout(30, TimeUnit.SECONDS) .setMaxTotal(200) .build();// 開發環境停用 SSL 驗證 CloseableHttpClient devClient = HttpClientBuilder.create() .disableSSLVerification() // ⚠️ 僅限開發環境 .build();
<h2>預設配置</h2>
- 連線超時:60 秒
- 請求超時:60 秒
- 回應超時:60 秒
- 最大連線數:100
- 每路由最大連線數:20
- SSL 驗證:啟用
- Since:
- 1.0
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionorg.apache.hc.client5.http.impl.classic.CloseableHttpClientbuild()建構 CloseableHttpClient 實例static HttpClientBuildercreate()建立新的 HttpClientBuilder 實例停用 SSL 憑證驗證setDefaultMaxPerRoute(int max) 設定每個路由的最大連線數setMaxTotal(int max) 設定連線池最大連線數setTimeout(int timeout, TimeUnit timeUnit) 設定超時時間(連線、請求、回應)
-
Constructor Details
-
HttpClientBuilder
public HttpClientBuilder()建構子(使用 create() 方法代替直接呼叫)
-
-
Method Details
-
create
-
disableSSLVerification
停用 SSL 憑證驗證
⚠️ 警告:僅用於開發和測試環境 生產環境使用會有安全風險(容易受到中間人攻擊)
- Returns:
- Builder 實例
- See Also:
-
setMaxTotal
設定連線池最大連線數
控制整個連線池的最大連線數量。當達到上限時,新的請求會等待可用連線。
- Parameters:
max- 最大連線數(必須 > 0)- Returns:
- Builder 實例
- Throws:
IllegalArgumentException- 如果 max <= 0
-
setDefaultMaxPerRoute
設定每個路由的最大連線數
控制單一路由(host + port)的最大連線數。避免單一目標主機佔用過多連線。
- Parameters:
max- 每個路由的最大連線數(必須 > 0)- Returns:
- Builder 實例
- Throws:
IllegalArgumentException- 如果 max <= 0
-
setTimeout
設定超時時間(連線、請求、回應)
此設定會同時應用於:
- 連線超時(Connect Timeout)
- 請求超時(Connection Request Timeout)
- 回應超時(Response Timeout)
- Parameters:
timeout- 超時時間(必須 > 0)timeUnit- 時間單位(不可為 null)- Returns:
- Builder 實例
- Throws:
IllegalArgumentException- 如果 timeout <= 0 或 timeUnit 為 null
-
build
public org.apache.hc.client5.http.impl.classic.CloseableHttpClient build()建構 CloseableHttpClient 實例
根據配置建立可關閉的 HTTP 客戶端實例。 重要:使用完畢後應呼叫
close()方法釋放資源。try (CloseableHttpClient client = HttpClientBuilder.create().build()) { // 使用 client 執行 HTTP 請求 } // 自動關閉並釋放資源- Returns:
- 配置完成的 CloseableHttpClient 實例
-