Ktor Client for Kotlin: 完整指南及示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Ktor Client for Kotlin: 完整指南及示例

\n\n

Ktor Client 是一个功能强大、轻量级且跨平台的 Kotlin 语言 HTTP 请求库。它由 JetBrains 公司开发,是 Ktor 生态系统的一部分,提供了基于协程的异步 API 用于与 Web 服务器交互。与许多其他 HTTP 客户端不同,Ktor Client 从设计之初就支持在多个平台上运行:JVM、Android、iOS、macOS、Linux、Windows 以及 JavaScript(通过 Kotlin/JS)。这使其成为使用 Kotlin Multiplatform (KMP) 开发跨平台应用的理想选择。

\n\n

为什么需要 Ktor Client?在现代开发中,几乎没有哪个应用能避免与远程 API 的交互。无论是从 REST 服务加载数据、发送表单、上传文件,还是使用 WebSockets,HTTP 客户端都是一个基础工具。Ktor Client 提供的不仅仅是基本的 GET 和 POST 请求功能,而是一个完整的插件(或“引擎”)生态系统,允许您配置序列化(JSON、XML、Protobuf)、压缩、日志记录、认证、重试机制等等。它的主要优势在于完全基于 Kotlin 协程的异步特性,这确保了高性能和简洁的代码,无需使用回调。

\n\n

该库采用模块化架构。您只需连接项目实际需要的组件:基础客户端、特定的引擎(例如,用于 Android/JVM 的 OkHttp 或用于 iOS 的 Darwin)、序列化器以及必要的插件。这最大限度地减少了最终应用程序的大小,并避免了依赖冲突。Ktor Client 正在积极开发中,拥有出色的文档,并得到 Kotlin 社区的支持。

\n\n

安装

\n\n

Ktor Client 通过 Gradle(或 Maven)构建系统分发。由于它不是 Python 包,因此不使用 pip install 命令。以下是将依赖项添加到您的 build.gradle.kts 文件中的精确说明。

\n\n

重要提示: 库的版本必须兼容。建议使用来自官方 Maven Central 仓库的最新稳定版本。在撰写本文时,当前版本是 2.3.12。

\n\n
// build.gradle.kts (Gradle Kotlin DSL)\n\n// 1. 添加仓库(通常已存在)\nrepositories {\n    mavenCentral()\n}\n\n// 2. 在 dependencies 块中添加依赖项\ndependencies {\n    // 基础客户端(必需)\n    implementation("io.ktor:ktor-client-core:2.3.12")\n\n    // 引擎 (Engine) - 选择其中一个选项:\n    // 用于 JVM(使用 Java HttpClient 或 OkHttp)\n    implementation("io.ktor:ktor-client-okhttp:2.3.12") // 推荐用于 Android/JVM\n    // implementation("io.ktor:ktor-client-java:2.3.12") // JVM 的替代方案\n\n    // 用于 iOS/macOS(原生 Darwin)\n    // implementation("io.ktor:ktor-client-darwin:2.3.12")\n\n    // 用于 JavaScript\n    // implementation("io.ktor:ktor-client-js:2.3.12")\n\n    // 用于 Windows/Linux (Curl)\n    // implementation("io.ktor:ktor-client-curl:2.3.12")\n\n    // 插件(可选,但非常有用):\n    // JSON 序列化(Gson 或 Kotlinx Serialization)\n    implementation("io.ktor:ktor-client-content-negotiation:2.3.12")\n    implementation("io.ktor:ktor-serialization-gson:2.3.12")\n    // 或 implementation("io.ktor:ktor-serialization-kotlinx-json:2.3.12")\n\n    // 日志记录\n    implementation("io.ktor:ktor-client-logging:2.3.12")\n\n    // 用于 WebSockets\n    // implementation("io.ktor:ktor-client-websockets:2.3.12")\n}\n
\n\n

如果您使用 Maven,依赖项将类似。添加依赖项后,同步项目(Sync Project with Gradle Files)。

\n\n

快速入门:最小工作示例

\n\n

让我们编写一个最简单的程序

推荐