Skip to content
Client Plugin

逾時

程式碼範例: client-timeout

HttpTimeout 插件允許您配置以下逾時:

  • 請求逾時 — 處理 HTTP 呼叫所需的時間週期:從傳送請求到接收回應。
  • 連線逾時 — 用戶端應與伺服器建立連線的時間週期。
  • Socket 逾時 — 與伺服器交換資料時,兩個資料封包之間的最大非活動時間。

您可以為所有請求或僅特定請求指定這些逾時。

新增相依性

HttpTimeout 僅需要 ktor-client-core 構件,不需要任何特定的相依性。

安裝 HttpTimeout

要安裝 HttpTimeout,請在用戶端配置區塊內的 install 函數中傳遞它:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.*
//...
val client = HttpClient(CIO) {
    install(HttpTimeout)
}

配置逾時

要配置逾時,您可以使用對應的屬性:

您可以在 install 區塊內為所有請求指定逾時。下面的程式碼範例展示了如何使用 requestTimeoutMillis 設定請求逾時:

kotlin
val client = HttpClient(CIO) {
    install(HttpTimeout) {
        requestTimeoutMillis = 1000
    }
}

如果您只需要為特定請求設定逾時,請使用 HttpRequestBuilder.timeout 屬性:

kotlin
val response: HttpResponse = client.get("http://0.0.0.0:8080/path1") {
    timeout {
        requestTimeoutMillis = 3000
    }
}

請注意,為特定請求指定的逾時會覆寫 install 區塊中的全域逾時。

在逾時的情況下,Ktor 會拋出 HttpRequestTimeoutExceptionConnectTimeoutExceptionSocketTimeoutException

限制

HttpTimeout 對於特定的引擎有一些限制。下表顯示了這些引擎支援哪些逾時:

引擎請求逾時連線逾時Socket 逾時
Darwin✅️✖️✅️
JavaScript✖️✖️
Curl✅️✖️
MockEngine✖️