Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ktor client
- ChatGPT
- 스피너
- build with ai
- 유튜브
- ExoPlayer
- android
- ListAdapter
- ListAdapter DiffUtil
- 시행착오
- getChangePayload
- llm
- android exoplayer
- 안드로이드
- Python
- exoplayer cache
- map
- android custom view
- DiffUtil.ItemCallback
- video caching
- ktor api call
- list map
- doc2vec
- Zsh
- FastAPI
- kotlin collection
- AWS EC2
- android ktor
- 독서
- kotlin list
Archives
- Today
- Total
버튼 수집상
[안드로이드] Retrofit 대신 Ktor로 Api 호출해보기 - 2 본문
기존에 썼던 OkHttpClient.Builder 설정대로 Ktor HttpClient를 설정해보겠다.
요구사항
- 상용 api 호출
- response / request 로그
- Flipper 연동 -> OkHttpClient만 지원하는듯
- Flow 리턴
- connect / write / read 타임아웃
- 헤더 cookie 설정
- 헤더 userAgent 설정
- X509TrustManager (debug 모드에서 ssl 인증오류 무시)
Ktor Client의 response serialization을 검색했을 때 제일 자주 나오는 JsonFeature는 2.0.0부터 deprecated 됐다.
HttpClient 생성할 때 옵션 설정 가능.
val client = HttpClient(Android) {
expectSuccess = true
defaultRequest {
// base url
url(HttpRoutes.BASE_URL)
// header
header(HttpHeaders.ContentType, Json)
header(HttpHeaders.Accept, Json)
header(HttpHeaders.UserAgent, "test-user")
}
install(ContentNegotiation) {
json(Json {
prettyPrint = true
isLenient = true
ignoreUnknownKeys = true
})
}
install(ResponseObserver) {
onResponse { response ->
Log.i("logger response", "${response.bodyAsText()}")
}
}
install(HttpTimeout) {
requestTimeoutMillis = 5000
connectTimeoutMillis = 5000
socketTimeoutMillis = 5000
}
install(HttpRequestRetry) {
maxRetries = 3
retryOnServerErrors()
}
engine {
sslManager = { httpsURLConnection ->
httpsURLConnection.sslSocketFactory = SslSettings.getSslContext()?.socketFactory
}
}
}.apply {
// interceptor
plugin(HttpSend).intercept { request ->
val flipperInterceptor = AndroidFlipperClient.getInstance(BaseApplication.context).getPluginByClass(NetworkFlipperPlugin::class.java)
?.let {
FlipperOkhttpInterceptor(it)
}
execute(request)
}
}
728x90
'TIL - 안드로이드' 카테고리의 다른 글
[안드로이드] 검색어 자동완성 커스텀 뷰 만들기 Custom Auto Complete View (0) | 2024.03.28 |
---|---|
[안드로이드] 모서리가 둥근 뷰파인더 만들기 rounded square transparent mask for zxing barcode reader UI (0) | 2023.12.14 |
[안드로이드] Retrofit 대신 Ktor로 Api 호출해보기 - 1 (0) | 2023.12.11 |
[안드로이드] TextView 원하는 글자만 남기고 말줄임표 보여주기 Custom Ellipsis (1) | 2023.12.07 |
[안드로이드] ListAdapter DiffUtil 제대로 쓰기 - 4 (0) | 2023.11.30 |