添加客户端依赖项
要在项目中使用 Ktor HTTP 客户端,您需要配置仓库并添加以下依赖项:
ktor-client-core包含 Ktor 客户端核心功能。引擎用于处理网络请求。 请注意,特定平台可能需要特定的引擎来处理网络请求。
(可选) 日志依赖项
提供日志框架以启用结构化且灵活的日志记录能力。
(可选) 插件依赖项
插件用于为客户端扩展特定功能。
在添加 Ktor 依赖项之前,您需要为该项目配置仓库:
生产环境
Ktor 的生产版本在 Maven 中央仓库中提供。 您可以按如下方式在构建脚本中声明此仓库:
抢先体验计划 (EAP)
要访问 Ktor 的 EAP 版本,您需要引用 Space 仓库:
KotlinGroovyXML请注意,Ktor EAP 可能需要 Kotlin dev 仓库:
KotlinGroovyXML
添加依赖项
对于不同的平台,Ktor 提供了带有
-jvm或-js等后缀的平台特定工件,例如ktor-client-core-jvm。请注意,Gradle 会自动解析适用于给定平台的工件,而 Maven 不支持此功能。这意味着对于 Maven,您需要手动添加平台特定后缀。
客户端依赖项
主要客户端功能在 ktor-client-core 工件中提供。根据您的构建系统,您可以按以下方式添加它:
您可以将 $ktor_version 替换为所需的 Ktor 版本,例如 3.3.3。
多平台
对于多平台项目,您可以在 gradle/libs.versions.toml 文件中定义 Ktor 版本和 ktor-client-core 工件:
[versions]
ktor = "3.4.0"
[libraries]
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }然后,将 ktor-client-core 作为依赖项添加到 commonMain 源集中:
sourceSets {
commonMain.dependencies {
implementation(libs.ktor.client.core)
}
}引擎依赖项
引擎负责处理网络请求。有适用于各种平台的不同客户端引擎,例如 Apache、CIO、Android、iOS 等。例如,您可以按如下方式添加 CIO 引擎依赖项:
多平台
对于多平台项目,您需要将所需引擎的依赖项添加到相应的源集中。
例如,要为 Android 添加 OkHttp 引擎依赖项,您可以先在 gradle/libs.versions.toml 文件中定义 Ktor 版本和 ktor-client-okhttp 工件:
[versions]
ktor = "3.4.0"
[libraries]
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }然后,将 ktor-client-okhttp 作为依赖项添加到 androidMain 源集中:
sourceSets {
androidMain.dependencies {
implementation(libs.ktor.client.okhttp)
}
}有关特定引擎所需依赖项的完整列表,请参阅添加引擎依赖项。
日志依赖项
在 JVM 上,Ktor 使用 Simple Logging Facade for Java (SLF4J) 作为日志记录的抽象层。SLF4J 将日志记录 API 与底层的日志记录实现解耦, 允许您集成最适合应用程序要求的日志框架。 常见的选择包括 Logback 或 Log4j。如果不提供框架,SLF4J 将默认使用无操作 (NOP) 实现, 这实际上会禁用日志记录。
要启用日志记录,请包含包含所需 SLF4J 实现的工件,例如 Logback:
有关 Ktor 中日志记录的更多信息,请参阅 Ktor Client 中的日志记录。
插件依赖项
Ktor 允许您使用默认情况下不可用的附加客户端功能(插件),例如授权和序列化。其中一些插件在单独的工件中提供。您可以从所需插件的主题中了解所需的依赖项。
对于多平台项目,应将插件依赖项添加到
commonMain源集中。请注意,某些插件可能对特定平台有限制。
确保 Ktor 版本一致性
使用 Ktor BOM 依赖项
Ktor BOM 允许您确保所有 Ktor 模块使用相同的、一致的版本,而无需为每个依赖项单独指定版本。
要添加 Ktor BOM 依赖项,请在构建脚本中按如下方式声明:
您还可以通过使用发布的版本目录来集中化 Ktor 依赖项声明。 这种方法具有以下好处:
- 无需在您自己的目录中手动声明 Ktor 版本。
- 在单个命名空间下公开每个 Ktor 模块。
要声明目录,请在
然后,您可以通过引用目录名称,在模块的
