| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Android
- Jenkins
- chrome
- 오블완
- 코테
- 티스토리챌린지
- React
- kotlin
- css
- 광고 id
- spring boots
- 백준
- nginx
- nuxt
- EC2
- docker
- AWS
- 오퍼월
- NanoHttpd
- 개발
- TypeScript
- 파이썬
- Express
- it
- 코딩테스트
- toml
- react-native
- Next
- python
- JavaScript
- Today
- Total
내맘대로 개발일지
[Kotlin] Retrofit2 연결 본문

📱테스트 환경
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 |