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