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✖️