Skip to content
Client Plugin

コンテンツエンコーディング

必須の依存関係: io.ktor:ktor-client-encoding

コード例: client-content-encoding

Ktor クライアントは、指定された圧縮アルゴリズム (gzipdeflate など) を有効にし、その設定を構成できる 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)
}