Skip to content

创建客户端应用程序

创建客户端应用程序

Ktor 包含一个多平台异步 HTTP 客户端,允许您

发送请求
了解如何进行请求并指定各种请求参数:请求 URL、HTTP 方法、标头和请求正文。
处理响应
了解如何接收响应、获取响应正文以及获取响应参数。
, 并通过
插件
了解如何使用客户端插件添加通用功能,例如日志记录、序列化和身份验证。
扩展其功能,例如
身份验证
Auth 插件用于在客户端应用程序中处理身份验证和授权。
JSON 序列化
ContentNegotiation 插件有两个主要用途:在客户端和服务器之间协商媒体类型,以及在发送请求和接收响应时以特定格式序列化/反序列化内容。
等。

在本教程中,我们将向您展示如何创建第一个发送请求并打印响应的 Ktor 客户端应用程序。

前提条件

在开始本教程之前,请安装 IntelliJ IDEA Community 或 Ultimate

创建新项目

您可以手动在现有项目中

创建并配置
了解如何创建和配置 Ktor 客户端。
Ktor 客户端,不过,从头开始的一种便捷方式是使用 IntelliJ IDEA 内置的 Kotlin 插件生成新项目。

要创建一个新的 Kotlin 项目,请打开 IntelliJ IDEA 并按照以下步骤操作:

  1. 在欢迎界面中,点击 New Project

    或者,从主菜单中选择 File | New | Project

  2. New Project 向导中,从左侧列表中选择 Kotlin

  3. 在右侧窗格中,指定以下设置:

    IntelliJ IDEA 中的新 Kotlin 项目窗口
    • Name :指定项目名称。

    • Location :指定项目的目录。

    • Build system :确保已选择 Gradle

    • Gradle DSL :选择 Kotlin

    • Add sample code :选中此选项可在生成的项目中包含示例代码。

  4. 点击 Create 并等待 IntelliJ IDEA 生成项目并安装依赖项。

添加依赖项

让我们添加 Ktor 客户端所需的依赖项。

  1. 打开 gradle.properties 文件并添加以下行以指定 Ktor 版本:

    kotlin

    NOTE

    要使用 Ktor 的 EAP 版本,您需要添加 Space 仓库

  2. 打开 build.gradle.kts 文件并将以下构件添加到 dependencies 块中:

    kotlin
    • ktor-client-core 是提供主要客户端功能的核心依赖项。
    • ktor-client-cio 是处理网络请求的
      引擎
      了解处理网络请求的引擎。
      依赖项。
  3. 点击 build.gradle.kts 文件右上角的 Load Gradle Changes 图标以安装新添加的依赖项。

    加载 Gradle 更改

创建客户端

要添加客户端实现,请导航至 src/main/kotlin 并按照以下步骤操作:

  1. 打开 Main.kt 文件并用以下实现替换现有代码:

    kotlin

    在 Ktor 中,客户端由 HttpClient 类表示。

  2. 使用 HttpClient.get() 方法来

    发送 GET 请求
    了解如何进行请求并指定各种请求参数:请求 URL、HTTP 方法、标头和请求正文。
    响应
    了解如何接收响应、获取响应正文以及获取响应参数。
    将作为 HttpResponse 类对象接收。

    kotlin

    添加上述代码后,IDE 会对 get() 函数显示以下错误: Suspend function 'get' should be called only from a coroutine or another suspend function (Suspend 函数 'get' 只能从协程或其他 suspend 函数中调用)。

    Suspend 函数错误

    要修复此错误,您需要使 main() 函数成为 suspending。

    TIP

    要详细了解如何调用 suspend 函数,请参阅协程基础知识
  3. 在 IntelliJ IDEA 中,点击定义旁边的灯泡图标并选择 Make main suspend

    使 main 成为 suspend
  4. 使用 println() 函数打印服务器返回的状态码,并使用 close() 函数关闭流并释放与其关联的所有资源。 Main.kt 文件应如下所示:

    kotlin

运行您的应用程序

要运行您的应用程序,请导航至 Main.kt 文件并按照以下步骤操作:

  1. 在 IntelliJ IDEA 中,点击 main() 函数旁边的装订区域图标,然后选择 Run 'MainKt'

    运行应用
  2. 等待 IntelliJ IDEA 运行应用程序。
  3. 您将在 IDE 底部的 Run 窗格中看到显示的输出。

    服务器响应

    虽然服务器返回了 200 OK 消息,但您还会看到一条错误消息,指出 SLF4J 无法定位 StaticLoggerBinder 类,默认使用无操作 (NOP) 日志记录器实现。这实际上意味着日志记录已被禁用。

    您现在已经拥有了一个可以运行的客户端应用程序。但是,要修复此警告并能够通过日志调试 HTTP 调用,还需要执行额外步骤

启用日志

由于 Ktor 在 JVM 上使用 SLF4J 抽象层进行日志记录,要启用日志记录,您需要提供一个日志框架,例如 Logback

  1. gradle.properties 文件中,指定日志框架的版本:

    kotlin
  2. 打开 build.gradle.kts 文件并将以下构件添加到 dependencies 块中:

    kotlin
  3. 点击 Load Gradle Changes 图标以安装新添加的依赖项。
  4. 在 IntelliJ IDEA 中,点击重新运行按钮(IntelliJ IDEA 重新运行图标)以重启应用程序。

  5. 您应该不再看到错误,但同样的 200 OK 消息仍将显示在 IDE 底部的 Run 窗格中。

    服务器响应

    至此,您已启用了日志功能。要开始看到日志,您需要添加日志配置。

  6. 导航至 src/main/resources 并创建一个新的 logback.xml 文件,其内容如下:

    xml
  7. 在 IntelliJ IDEA 中,点击重新运行按钮(IntelliJ IDEA 重新运行图标)以重启应用程序。

  8. 您现在应该能够在 Run 窗格中打印的响应上方看到跟踪日志:

    服务器响应

TIP

Ktor 通过
Logging
所需依赖项:io.ktor:ktor-client-logging
插件提供了一种简单直接的方法来为 HTTP 调用添加日志,而添加配置文件则允许您在复杂的应用程序中微调日志行为。

后续步骤

要更好地理解并扩展此配置,请探索如何

创建并配置 Ktor 客户端
了解如何创建和配置 Ktor 客户端。