Client Plugin
內容編碼
必要依賴: io.ktor:ktor-client-encoding
程式碼範例: client-content-encoding
Ktor 客戶端提供了 ContentEncoding 外掛程式,允許您啟用指定的壓縮演算法(例如 gzip
和 deflate
)並配置其設定。此外掛程式具有三個主要目的:
- 設定
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
以下範例展示了如何在客戶端啟用 deflate
和 gzip
編碼器並指定品質值:
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)
}