Class HttpClientBuilder

java.lang.Object
io.leandev.appfuse.http.HttpClientBuilder

public class HttpClientBuilder extends Object

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 Details

    • HttpClientBuilder

      public HttpClientBuilder()
      建構子(使用 create() 方法代替直接呼叫)
  • Method Details

    • create

      public static HttpClientBuilder create()
      建立新的 HttpClientBuilder 實例
      Returns:
      HttpClientBuilder 實例
    • disableSSLVerification

      public HttpClientBuilder disableSSLVerification()

      停用 SSL 憑證驗證

      ⚠️ 警告:僅用於開發和測試環境 生產環境使用會有安全風險(容易受到中間人攻擊)

      Returns:
      Builder 實例
      See Also:
    • setMaxTotal

      public HttpClientBuilder setMaxTotal(int max)

      設定連線池最大連線數

      控制整個連線池的最大連線數量。當達到上限時,新的請求會等待可用連線。

      Parameters:
      max - 最大連線數(必須 > 0)
      Returns:
      Builder 實例
      Throws:
      IllegalArgumentException - 如果 max <= 0
    • setDefaultMaxPerRoute

      public HttpClientBuilder setDefaultMaxPerRoute(int max)

      設定每個路由的最大連線數

      控制單一路由(host + port)的最大連線數。避免單一目標主機佔用過多連線。

      Parameters:
      max - 每個路由的最大連線數(必須 > 0)
      Returns:
      Builder 實例
      Throws:
      IllegalArgumentException - 如果 max <= 0
    • setTimeout

      public HttpClientBuilder setTimeout(int timeout, TimeUnit timeUnit)

      設定超時時間(連線、請求、回應)

      此設定會同時應用於:

      • 連線超時(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 實例