Skip to content
Client Plugin

Cookie

代码示例: client-cookies

Ktor 客户端允许您通过以下方式手动处理 cookie:

  • cookie 函数允许您向特定请求附加一个 cookie。
  • setCookie 函数使您能够解析在响应中接收到的 Set-Cookie 标头值。

HttpCookies 插件自动处理 cookie,并将其在调用之间保留在存储中。默认情况下,它使用内存存储,但您也可以使用 CookiesStorage 实现持久化存储。

添加依赖项

HttpCookies 只需 ktor-client-core artifact,不需要任何特定的依赖项。

安装和配置 HttpCookies

要安装 HttpCookies,请在客户端配置块中将其传递给 install 函数:

kotlin
val client = HttpClient(CIO) {
    install(HttpCookies)
}

这足以使 Ktor 客户端在请求之间保留 cookie。您可以在此处找到完整示例:client-cookies

HttpCookies 插件还允许您通过使用 ConstantCookiesStorage 为每个请求添加一组特定的 cookie。这在验证服务器响应的测试用例中可能很有用。下面的示例展示了如何向特定域的所有请求添加指定的 cookie:

kotlin
val client = HttpClient(CIO) {
    install(HttpCookies) {
        storage = ConstantCookiesStorage(Cookie(name = "user_name", value = "jetbrains", domain = "0.0.0.0"))
    }
}

获取 cookie

客户端提供 cookies 函数来获取指定 URL 的所有 cookie:

kotlin
client.cookies("http://0.0.0.0:8080/")

自定义 cookie 存储

如果需要,您可以通过实现 CookiesStorage 接口来创建自定义 cookie 存储:

kotlin
val client = HttpClient(CIO) {
    install(HttpCookies) {
        storage = CustomCookiesStorage()
    }
}

public class CustomCookiesStorage : CookiesStorage {
    // ...
}

您可以参考 AcceptAllCookiesStorage