본문 바로가기
요모조모 정보

안드로이드 Retrofit으로 로또 당첨 번호 JSON 데이터 가져오기: 1000회차 예시

by Kongkongpapa 2025. 3. 20.
728x90
반응형
SMALL

안녕하세요! 오늘은 안드로이드 앱 개발에서 Retrofit 라이브러리를 사용하여 로또 당첨 번호 JSON 데이터를 가져오는 방법을 알아보겠습니다. 특히, https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=1000 URL을 통해 1000회차 로또 당첨 번호 데이터를 가져오는 예시를 보여드리겠습니다.

Retrofit이란?

Retrofit은 안드로이드 앱에서 RESTful API 통신을 간편하게 처리할 수 있도록 도와주는 강력한 라이브러리입니다. JSON이나 XML 데이터를 파싱하여 Java 또는 Kotlin 객체로 변환해주는 기능을 제공하며, 안드로이드 앱에서 서버와의 통신을 쉽게 구현할 수 있도록 도와줍니다.

로또 당첨 번호 JSON 데이터 가져오기 예시

다음은 Retrofit을 사용하여 로또 당첨 번호 JSON 데이터를 가져오는 예시 코드입니다.

1. 의존성 추가

build.gradle (Module:app) 파일에 Retrofit 관련 의존성을 추가합니다.

Gradle
 
dependencies {
    implementation("com.squareup.retrofit2:retrofit:2.9.0")
    implementation("com.squareup.retrofit2:converter-gson:2.9.0")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") // 코루틴
}

2. 데이터 모델 클래스 생성

JSON 응답 데이터를 담을 데이터 모델 클래스를 생성합니다. LottoResult.kt 파일을 생성하고 다음과 같이 코드를 작성합니다.

Kotlin
 
data class LottoResult(
    val drwNo: Int,
    val drwtNo1: Int,
    val drwtNo2: Int,
    val drwtNo3: Int,
    val drwtNo4: Int,
    val drwtNo5: Int,
    val drwtNo6: Int,
    val bnusNo: Int
)

3. Retrofit 인터페이스 생성

LottoService.kt 인터페이스를 생성하고 다음과 같이 코드를 작성합니다.

Kotlin
 
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Query

interface LottoService {
    @GET("common.do?method=getLottoNumber")
    fun getLottoResult(@Query("drwNo") drwNo: Int): Call<LottoResult>
}

4. Retrofit 클라이언트 생성

RetrofitClient.kt 클래스를 생성하고 다음과 같이 코드를 작성합니다.

Kotlin
 
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

object RetrofitClient {
    private const val BASE_URL = "https://www.dhlottery.co.kr/"

    val instance: LottoService by lazy {
        val retrofit = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

        retrofit.create(LottoService::class.java)
    }
}

5. 데이터 가져오기 및 파싱

MainActivity.kt에서 다음과 같이 코드를 작성하여 로또 당첨 번호 데이터를 가져옵니다.

Kotlin
 
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import retrofit2.await

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ...

        CoroutineScope(Dispatchers.IO).launch {
            try {
                val response = RetrofitClient.instance.getLottoResult(1000).await() // 1000회차 예시
                Log.d("Lotto", "DrwNo: ${response.drwNo}")
                Log.d("Lotto", "Winning Numbers: ${response.drwtNo1}, ${response.drwtNo2}, ${response.drwtNo3}, ${response.drwtNo4}, ${response.drwtNo5}, ${response.drwtNo6}")
                Log.d("Lotto", "Bonus Number: ${response.bnusNo}")
            } catch (e: Exception) {
                Log.e("Lotto", "Error: ${e.message}")
            }
        }
    }
}

코드 설명:

  1. LottoResult 데이터 클래스를 생성하여 JSON 응답 데이터를 담을 객체를 정의합니다.
  2. LottoService 인터페이스에서 getLottoResult() 메서드를 정의하여 로또 당첨 번호 데이터를 가져오는 API를 호출합니다.
  3. RetrofitClient 객체에서 Retrofit 클라이언트를 생성하고 LottoService 인터페이스를 구현합니다. GsonConverterFactory를 사용하여 JSON 응답 데이터를 LottoResult 객체로 자동 파싱합니다.
  4. MainActivity에서 코루틴을 사용하여 백그라운드 스레드에서 API를 호출하고, 파싱된 데이터를 로그에 출력합니다.

주의사항

  • API 응답 데이터의 구조는 언제든지 변경될 수 있으므로, 데이터 모델 클래스를 업데이트해야 할 수 있습니다.
  • API 요청 시 네트워크 오류가 발생할 수 있으므로, 예외 처리를 추가하는 것이 좋습니다.
  • 로또 당첨 번호 데이터를 상업적으로 이용하는 것은 저작권 침해에 해당할 수 있으므로 주의해야 합니다.

Retrofit과 Gson을 함께 사용하면 안드로이드 앱에서 JSON 데이터를 간편하게 가져와 파싱할 수 있습니다. 위 예시 코드를 참고하여 다양한 API를 활용해 보세요!

728x90
반응형
LIST