Skip to content
Client Plugin

Cookie

程式碼範例 client-cookies

Ktor用戶端允許您透過以下方式手動處理Cookie:

  • cookie函式允許您將Cookie附加到特定請求
  • setCookie函式讓您能夠解析從回應中接收到的Set-Cookie標頭值。

HttpCookies外掛程式會自動處理Cookie,並將其保存在存儲中以供呼叫之間使用。 預設情況下,它使用記憶體內存儲,但您也可以使用CookiesStorage實作持久化存儲。

新增相依性

HttpCookies只需要ktor-client-core構件,不需要任何特定的相依性。

安裝與配置 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作為參考。