[kotlin] 코틀린에서 OkHttp 라이브러리 연동하기

OkHttp는 안드로이드 및 자바 애플리케이션에서 네트워크 요청을 처리하기 위해 많이 사용되는 라이브러리입니다. 코틀린에서도 OkHttp를 쉽게 연동할 수 있습니다.

OkHttp 라이브러리 추가하기

먼저 프로젝트에 OkHttp 라이브러리를 추가해야 합니다. 이를 위해 build.gradle 파일에 다음 코드를 추가하세요:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:3.14.9'
}

이제 OkHttp 라이브러리가 프로젝트에 추가되었습니다.

네트워크 요청 보내기

OkHttp를 사용하여 네트워크 요청을 보내려면 OkHttpClientRequest 객체를 생성해야 합니다.

val client = OkHttpClient()

val request = Request.Builder()
    .url("https://api.example.com/data")
    .build()

위 예제에서는 Request.Builder를 사용하여 Request 객체를 만들고, url() 메서드를 사용하여 요청할 URL을 지정하고 있습니다.

이제 OkHttpClientnewCall() 메서드를 사용하여 요청을 보내고, 비동기적으로 응답을 받을 수 있습니다.

client.newCall(request).enqueue(object : Callback {
    override fun onFailure(call: Call, e: IOException) {
        // 요청 실패 처리
    }

    override fun onResponse(call: Call, response: Response) {
        // 응답 처리
        val responseBody = response.body()?.string()
        // TODO: 응답 데이터를 처리하는 코드 작성
    }
})

위 예제에서는 enqueue() 메서드를 사용하여 요청을 비동기적으로 보내고, onFailure() 메서드와 onResponse() 메서드를 override하여 요청의 실패 및 응답 처리를 정의하고 있습니다.

요청 파라미터 추가하기

네트워크 요청에 파라미터를 추가해야 할 때도 있습니다. OkHttp에서는 FormBody 객체를 사용하여 파라미터를 추가할 수 있습니다.

val formBody = FormBody.Builder()
    .add("username", "john")
    .add("password", "secret")
    .build()

val request = Request.Builder()
    .url("https://api.example.com/login")
    .post(formBody)
    .build()

위 예제에서는 FormBody.Builder를 사용하여 파라미터를 추가하고, post() 메서드를 사용하여 POST 요청을 설정하고 있습니다.

요청 헤더 설정하기

요청에 헤더를 추가해야 할 때도 있습니다. OkHttp에서는 addHeader() 메서드를 사용하여 헤더를 설정할 수 있습니다.

val request = Request.Builder()
    .url("https://api.example.com/data")
    .addHeader("Authorization", "Bearer token123")
    .build()

위 예제에서는 addHeader() 메서드를 사용하여 “Authorization” 헤더를 추가하고 있습니다.

요청 메서드 변경하기

OkHttp에서는 요청의 메서드를 변경할 수도 있습니다. 기본적으로 GET 메서드가 사용되지만, method() 메서드를 사용하여 다른 메서드를 지정할 수 있습니다.

val request = Request.Builder()
    .url("https://api.example.com/data")
    .method("POST", null)
    .build()

위 예제에서는 method() 메서드를 사용하여 POST 메서드를 지정하고 있습니다.

참고 자료