Skip to content
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 구성

아래 예시는 지정된 품질 값으로 클라이언트에서 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)
}