Client Plugin
コンテンツエンコーディング
必須の依存関係: io.ktor:ktor-client-encoding
コード例: client-content-encoding
Ktor クライアントは、指定された圧縮アルゴリズム (gzip や deflate など) を有効にし、その設定を構成できる ContentEncoding プラグインを提供します。このプラグインには、主に3つの目的があります。
- 指定されたQ値(品質値)を持つ
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 の構成
以下の 例は、指定されたQ値(品質値)でクライアントの 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)
}