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