android

Android Okhttp

Seon Dev Notes 2025. 4. 8. 00:43

오늘은 Android 앱 개발 시 자주 쓰이는 HTTP 통신 라이브러리, 바로 OkHttp에 대해 정리해보려 합니다.

Okhttp

OkHttp는 Square에서 만든 HTTP 클라이언트 라이브러리이다. Retrofit도 내부적으로 OkHttp를 사용하고 있을 정도로 핵심적인 라이브러리이다.

Okhttp의 장점

  1. 간편한 사용법.
    OkHttp는 복잡한 설정 없이도 바로 HTTP 요청을 보낼 수 있다.
  2. 비동기 요청 지원.
    기본적으로 비동기 방식인 enqueue()를 제공하기 때문에 네트워크 요청으로 인해 UI가 멈추는 문제를 방지할 수 있다.
  3. 인터셉터를 통한 요청/응답 제어.
    인터셉터를 활용하면 요청 전에 헤더를 추가하거나 응답 후 공통 처리를 하는 등 전처리/후처리를 자유롭게 설정할 수 있다.
  4. 로깅과 디버깅 용이하다.
    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