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())
}
})
-영화인 검색 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 |