OkHttp는 안드로이드 및 자바 애플리케이션에서 네트워크 요청을 처리하기 위해 많이 사용되는 라이브러리입니다. 코틀린에서도 OkHttp를 쉽게 연동할 수 있습니다.
OkHttp 라이브러리 추가하기
먼저 프로젝트에 OkHttp 라이브러리를 추가해야 합니다. 이를 위해 build.gradle
파일에 다음 코드를 추가하세요:
dependencies {
implementation 'com.squareup.okhttp3:okhttp:3.14.9'
}
이제 OkHttp 라이브러리가 프로젝트에 추가되었습니다.
네트워크 요청 보내기
OkHttp를 사용하여 네트워크 요청을 보내려면 OkHttpClient
와 Request
객체를 생성해야 합니다.
val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.example.com/data")
.build()
위 예제에서는 Request.Builder
를 사용하여 Request
객체를 만들고, url()
메서드를 사용하여 요청할 URL을 지정하고 있습니다.
이제 OkHttpClient
의 newCall()
메서드를 사용하여 요청을 보내고, 비동기적으로 응답을 받을 수 있습니다.
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 메서드를 지정하고 있습니다.