오늘은 Android 앱 개발 시 자주 쓰이는 HTTP 통신 라이브러리, 바로 OkHttp에 대해 정리해보려 합니다.
Okhttp
OkHttp는 Square에서 만든 HTTP 클라이언트 라이브러리이다. Retrofit도 내부적으로 OkHttp를 사용하고 있을 정도로 핵심적인 라이브러리이다.
Okhttp의 장점
- 간편한 사용법.
OkHttp는 복잡한 설정 없이도 바로 HTTP 요청을 보낼 수 있다. - 비동기 요청 지원.
기본적으로 비동기 방식인 enqueue()를 제공하기 때문에 네트워크 요청으로 인해 UI가 멈추는 문제를 방지할 수 있다. - 인터셉터를 통한 요청/응답 제어.
인터셉터를 활용하면 요청 전에 헤더를 추가하거나 응답 후 공통 처리를 하는 등 전처리/후처리를 자유롭게 설정할 수 있다. - 로깅과 디버깅 용이하다.
HttpLoggingInterceptor를 추가하면 요청 URL, 응답 코드, 응답 body 등을 로그로 쉽게 확인할 수 있다.
예제
val client = OkHttpClient()
val request = Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts/1")
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
Log.e("OkHttp", "네트워크 요청 실패", e)
}
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
val responseData = response.body?.string()
Log.d("OkHttp", "응답 내용: $responseData")
} else {
Log.e("OkHttp", "응답 실패: ${response.code}")
}
}
})
- OkHttpClient()로 클라이언트를 생성하고,
- Request.Builder()로 요청을 구성하고,
- enqueue()를 통해 비동기로 서버에 요청을 보낸다.
- 결과는 onResponse()에서 확인할 수 있고, 실패 시 onFailure()에서 예외를 처리한다.
val logging = HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.BODY
}
val client = OkHttpClient.Builder()
.addInterceptor(logging)
.build()
이거는 요청/응답 정보를 로그로 확인하고 싶다면 아래처럼 로깅 인터셉터를 추가하는 예제이다.
'android' 카테고리의 다른 글
Android clickable (0) | 2025.04.25 |
---|---|
Android build-logic (0) | 2025.04.14 |
Android Interceptor (0) | 2025.04.01 |
Android UiState (0) | 2025.03.25 |
Android ViewModel (0) | 2025.03.17 |