Client Plugin
Cookie
代码示例: client-cookies
Ktor 客户端允许您通过以下方式手动处理 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。