반응형
Android Retrofit2 사용하기

Retrofit이란?
안드로이드에서 API서버와 통신하기 위한 방법. Retrofit2는 구현하기 쉽고 가독성이 좋아 많이 사용된다.
1. manifests에 퍼미션 추가하기
<uses-permission android:name="android.permission.INTERNET" />
2. build.gradle (Module)에 Retrofit2 추가하기
//retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
공식 홈페이지에서 최신 버전을 확인 후 넣어주면 된다.
converter-gson 라이브러리는 json을 데이터 클래스로 변환해 줘서 편리하다.
3. Retrofit Sigleton 객체 만들기
object RetrofitBuilder {
private const val BASE_URL = "base가 될 주소"
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
변하지 않는 고정된 주소를 base url에 넣어준다
4. API 인터페이스 생성
interface LoginService {
@FormUrlEncoded
@POST("/app_login")
fun requestLogin(
@Field("userid") userid:String,
@Field("userpw") userpw:String
) : Call<LoginDTO>
}
GET, POST에 따라 어노테이션을 적어준다.
@GET, @POST
Call<T>는 응답받을 Data Class를 넣어주면 된다.
Field에 입력받을 값을 서버에서 받는 json key 와 같은 값으로 입력 (@SerialoizedName을 통해 매핑해도 된다)
data class LoginDTO(
val code: String,
val msg: String,
val userInfo: UserInfo
)
JSON데이터를 받아올 DTO 클래스를 생성해준다.
5. Login Activity 에서 실제 사용하기
RetrofitBuilder.loginService.requestLogin(id,pw).enqueue(object: Callback<LoginDTO> {
override fun onResponse(call: Call<LoginDTO>, response: Response<LoginDTO>) {
if(response.body()?.code?.toInt() == 200){
val User = response.body()?.userInfo
// TODO 여기에서 로그인 성공 후 처리하기
}else{
Log.d("KONG", "onResponse: ${response.body()?.msg}")
}
}
override fun onFailure(call: Call<LoginDTO>, t: Throwable) {
//네트워크가 불안정합니다.
}
})
Retrofit 공식 홈페이지에서 더 많은 사용방법을 참고 할 수 있다.
https://square.github.io/retrofit/
Retrofit
A type-safe HTTP client for Android and Java
square.github.io
반응형
'Android' 카테고리의 다른 글
Foreground Service 사용해보기 (0) | 2022.08.10 |
---|---|
Fatal Exception: android.content.ActivityNotFoundException 예외처리 (0) | 2022.06.28 |
TextView 특정 글자만 색상/크기 변경하기 (0) | 2022.05.31 |
Android OS 12 블루투스 연결 오류 및 새 권한 추가 (0) | 2022.05.23 |
EditTextView에서 자동으로 폰번호 - 넣기 (0) | 2022.05.13 |
댓글