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)
}