
📱테스트 환경
Samsung Galaxy Android 13 • Android 10
😢 내가 겪은 문제
내가 만든 API 를 연결하려고 찾아보다가 Retrofit2 를 찾았다. 근데 이걸 어떻게 하는지 구글에 검색해서 따라해 보려고했는데
와... 내 머리로는 이해하기도 쉽지 않았고, 내 프로젝트에서 따라하려고 해도 오류 투성이였다...
그래서 강의도 결제하고 , 검색해서 나에게 필요한 정보만 가져와다가 어떻게 되긴 됐다... ^^
Build.gradle ( Module :app )
// retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
// Gson 변환기
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.picasso:picasso:2.71828'
필요한걸 넣어준 다음에 Sync Now 클릭
RetrofitClient.kt
object RetrofitClient {
private const val BASE_URL = "https://기본주소/" // 서버의 기본 URL을 입력합니다.
val gson = GsonBuilder().setLenient().create()
private val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
val apiService: ApiService = retrofit.create(ApiService::class.java)
}
나는 이걸 utils 폴더 안에 저장해놓고 불러다가 썼다.
원래 웹개발을 하던 습관이 있어서 그런지 이 폴더구조가 맞는지는 나도 잘 모른다...
그냥 코드만 이해하면 될 것 같다...
ApiService.kt
data class Person(
val name: String
)
interface ApiService {
@GET("/뒤에 붙는 주소") // 예시: 서버에서 사용자 정보를 가져오는 API
fun getPerson(): Call<Person> // User는 서버에서 받아올 데이터의 모델 클래스입니다.
}
RetrofitClient 에서 기본적인 주소 을 넣어줬으니 여기서는 뒤에 붙는 것만 넣어주면된다.
예를 들어서 /hello 같은 주소만 넣어주면 https://기본주소/hello 로 연결돼서 호출할 수 있다.
@GET("/뒤에 붙는 주소") // 예시: 서버에서 사용자 정보를 가져오는 API
API 를 호출하고 getPerson 을 통해 데이터 정보값을 받아올 수 있다 !!
fun getVersion(): Call<Person>
MainActivity.kt
RetrofitClient.apiService.getVersion().enqueue(object : Callback<Version> {
override fun onResponse(call: Call<Person>, response: Response<Version>) {
if (response.isSuccessful) {
val person = response.body()
if (person != null) {
Log.d("qwer", "$person")
}
}
}
override fun onFailure(call: Call<Person>, t: Throwable) {
Log.d("qwer", "$t")
}
})
API 호출하면 onResponse 로 넘어간다. 여기서 호출에 성공하면 response.isSuccessful 조건을 통해 이것저것 해볼 수 있다!!
실패했을 경우에는 onFailure 로 넘어가는데, 에러 로그를 통해서 해결하면된다!!
나같은 경우에는 onFailure 로 넘어가면 대부분이 데이터 타입이 안맞아서 발생하는 오류였다.
그러니 데이터 타입을 꼭!! 확인하자 ^^
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] 앱 알림 보내기 (0) | 2023.08.09 |
---|---|
[Kotlin] Activity 이동 시 Animation 제거하는 방법 (0) | 2023.08.09 |
[Kotlin] Splash Screen 만들기 (0) | 2023.08.09 |
[Kotlin] 앱 삭제 이후에도 일부 데이터 캐시 남아있을 때 (0) | 2023.08.09 |
[Kotlin] Android 12 이상 메일 보내는 방법 (0) | 2023.08.07 |