본문 바로가기
Android

Android Retrofit2을 이용한 로그인 example

by kkong93 2022. 6. 16.
반응형

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

 

반응형

댓글