Skip to content
Client Plugin

內容編碼

必要依賴: io.ktor:ktor-client-encoding

程式碼範例: client-content-encoding

Ktor 客戶端提供了 ContentEncoding 外掛程式,允許您啟用指定的壓縮演算法(例如 gzipdeflate)並配置其設定。此外掛程式具有三個主要目的:

  • 設定 Accept-Encoding 標頭並指定品質值。
  • 選擇性地編碼請求主體。
  • 解碼從伺服器接收的內容以獲取原始負載。

新增依賴項

若要使用 ContentEncoding,您需要在建置腳本中包含 ktor-client-encoding 構件:

Kotlin
Groovy
XML

您可以從

新增客戶端依賴項
了解如何將客戶端依賴項新增到現有專案。
了解更多 Ktor 客戶端所需的構件。

安裝 ContentEncoding

若要安裝 ContentEncoding,請在客戶端配置區塊中將其傳遞給 install 函數:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.compression.*
//...
val client = HttpClient(CIO) {
    install(ContentEncoding)
}

配置 ContentEncoding

以下範例展示了如何在客戶端啟用 deflategzip 編碼器並指定品質值:

kotlin
val client = HttpClient(CIO) {
    install(ContentEncoding) {
        deflate(1.0F)
        gzip(0.9F)
    }
}

如果需要,您可以實作 ContentEncoder 介面以建立自訂編碼器,並將其傳遞給 customEncoder 函數。

編碼請求主體

若要編碼請求主體,請在 HttpRequestBuilder 區塊中使用 compress() 函數。

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.compression.*
//...
val client = HttpClient(CIO) {
    install(ContentEncoding)
}
client.post("/upload") {
    compress("gzip")
    setBody(someLongBody)
}