hyeon.s
개발로그
hyeon.s
전체 방문자
오늘
어제
  • 분류 전체보기 (150)
    • Web 및 인프라 (1)
      • Web (1)
      • Terraform (2)
      • Docker (1)
    • Android (1)
      • 공부 (28)
      • 트러블슈팅 (12)
      • 프로젝트 개발 (10)
      • Compose (2)
      • 우테코 프리코스 (0)
    • Server (5)
      • 공부 (1)
      • Spring (4)
    • 알고리즘 (68)
      • 문제풀이 (C++,Kotlin) (54)
      • 공부 (13)
    • 디자인 (3)
      • UI (3)
    • Language (5)
      • Kotlin (5)
      • JAVA (0)
    • IT 동아리 (8)
      • UMC 3기 (Android) (7)
      • Sopt 32기 (Android) (1)

Github

글쓰기 / 관리자
hELLO · Designed By 정상우.
hyeon.s

개발로그

[UMC/Android] 9주차 - Open API 활용
IT 동아리/UMC 3기 (Android)

[UMC/Android] 9주차 - Open API 활용

2022. 12. 2. 20:30
728x90

9주차 - Open API 활용

🧙‍♀️ Retrofit2 를 이용해 OpenAPI 연동

- 주간 박스오피스 API로 Recyclerview 구현

  • retrofit을 build 하는 부분을 전역적으로 사용할 수 없을까? 에 대한 궁금증 발생
    • 싱글톤 패턴을 이용하면 activity마다 build 할 필요없이 전역적으로 사용 가능하다!
object RetrofitService {
    private const val BASE_URL = "" //받아올 URL 을 넣어주면 된다. 

    val retrofit:Retrofit = Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .build()
} // 다음과 같이 만들어 전역적으로 활용함.
  • 박스오피스 API 활용 방법
    • https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do
    • 해당 사이트에 들어가면 필요한 데이터들과 받는 데이터들의 타입과 이름을 알 수 있다.
    • 이를 토대로 아래와 같이 data class를 만들어준다.
data class Movie(
    @SerializedName("boxOfficeResult")
    var boxofficeResult:BoxOfficeResult
)

data class BoxOfficeResult(
    @SerializedName("boxofficeType")
    var boxofficeType: String,
    @SerializedName("showRange")
    var showRang: String,
    @SerializedName("yearWeekTime")
    var yearWeekTime:String,
    @SerializedName("weeklyBoxOfficeList")
    var weeklyBoxOfficeList : List<WeeklyBoxOfficeList> = arrayListOf()
)

data class WeeklyBoxOfficeList (
    @SerializedName("rnum")
    var rnum: String?, //순번
    @SerializedName("rank")
    var rank : String?, //박스오피스 랭킹
    @SerializedName("movieNm")
    var movieNm: String?, //영화이름
    @SerializedName("openDt")
    var openDt: String?, //개봉일
    @SerializedName("audiAcc")
    var audiAcc: String?, //누적 관객수
)
  • 유의: 이름과 자료형을 잘 맞추지 않으면 null 값이 들어오는 경우가 발생한다.
  • 데이터 받는 부분
val retrofit = RetrofitService.retrofit
        retrofit.create(RetrofitAPI::class.java).getMovie(keyValue,0,20220101,10)
            .enqueue(object : Callback<Movie> {
                override fun onResponse(call: Call<Movie>, response: Response<Movie>) {
                    Log.e("Success",response.body().toString())
                    val dataList = response.body()?.boxofficeResult?.weeklyBoxOfficeList
                    initAdapter(dataList) // 받은 값의 리스트들을 RVAdapter에 넣어줬다.
                }

                override fun onFailure(call: Call<Movie>, t: Throwable) {
                    Log.e("Failure",t.message.toString())
                }
            })

실제로 받은 데이터들의 모습을 Log로 찍어봤다. (Log.e인 이유는 눈에 잘 보이기 위함.)

-영화인 검색 API : 감독 박찬욱 검색

  • 위와 같은 방식으로 영화인 검색 API를 활용한 결과이다.
728x90
저작자표시 (새창열림)

'IT 동아리 > UMC 3기 (Android)' 카테고리의 다른 글

[UMC/Android] 8주차 - RoomDB 활용하기  (0) 2022.11.23
[UMC/Android] 7주차 - Thread 이용한 타이머 만들기  (0) 2022.11.16
[UMC/Android] 6주차 - Bottom navigation, TabLayout, ViewPager2  (0) 2022.11.13
[UMC/Android] 5주차 - 메모 어플 만들기  (0) 2022.11.03
[UMC/Android] 3주차 - Activity/Fragment간 데이터 전달  (0) 2022.10.12
'IT 동아리/UMC 3기 (Android)' 카테고리의 다른 글
  • [UMC/Android] 8주차 - RoomDB 활용하기
  • [UMC/Android] 7주차 - Thread 이용한 타이머 만들기
  • [UMC/Android] 6주차 - Bottom navigation, TabLayout, ViewPager2
  • [UMC/Android] 5주차 - 메모 어플 만들기
hyeon.s
hyeon.s
이유있는 코드를 짜자

티스토리툴바