쏭식
Ssongcode;
쏭식
전체 방문자
오늘
어제
  • 분류 전체보기 (106)
    • JAVA (21)
      • Basic (21)
    • Kotlin (14)
      • Basic (14)
    • Android (64)
      • Basic (24)
      • JETPACK (30)
      • Compose (8)
      • 파고들기 (2)
    • Project (4)
    • etc (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • livedata
  • 컴포즈
  • Adapter
  • 코테
  • 백준
  • workmanager
  • Kotlin
  • 변수
  • 자바
  • DataBinding
  • 기초100제
  • AAC
  • 코드업100제
  • Android
  • 리사이클러뷰
  • 프로젝트회고
  • 코틀린코테
  • mvvm
  • 코딩테스트
  • 알고리즘
  • 객체지향
  • 자료구조
  • Jetpack
  • 코틀린
  • 메소드
  • compose
  • 배열
  • ViewModel
  • Room
  • 상속

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
쏭식

Ssongcode;

[Android] Retrofit2 사용하기
Android/Basic

[Android] Retrofit2 사용하기

2022. 4. 26. 23:59

Retrofit2 ?

-Rest API 통신 라이브러리

-Rest API 통신을 위해 구현된 스퀘어사의 OkHttp 라이브러리의 상위 구현체

-android와 서버 환경에서 HTTP API를 쉽고 안전하게 사용할 수 있도록 도와준다.

 

Retrofit을 사용하기 위해 사전준비를 해보자!

1.  준비

네트워크를 사용할 것이니 다음과 같이 AndroidManifest.xml파일에 추가하자.

<!-- 인터넷 사용 권한 설정-->
<uses-permission android:name="android.permission.INTERNET" />

또한, build.gradle에 의존성도 추가해주자!!

// Retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:retrofit-mock:2.9.0'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

여기서 gson은 JSON을 코틀린 클래스로 바꿔주는 역할을 한다!

따로 변환 객체를 구현하지 않아도 된다는 장점이 있다

 

2.  Retrofit 생성

object ServiceCreator {
    
    private const val BASE_URL = "http://*******:8080"
    private val interceptor = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)

    private val client = OkHttpClient.Builder()
        .addInterceptor(interceptor)
        .build()

    private val retrofit: Retrofit = Retrofit.Builder()
        .baseUrl(BASE_URL)
        .addConverterFactory(GsonConverterFactory.create())
        .client(client)
        .build()

 

3.  Retrofit Service 생성

interface UserIdCheckService {
    @POST("/api/v1/users/duplicate-check")
    fun IdCheck(
        @Body body: RequestIdCheckData
    ): Call<ResponseIdCheckData>
}

아이디 중복체크 api를 예시로 들어보자.

서버에게 요청하는 메소드의 종류(GET, POST, PUT, DELETE)를 파악한 후

뒤에는 url 주소를 적어준다.

이렇게 서비스 인터페이스를 생성해주었다면, 아까 처음에 생성한 Retrofit에서 언급을해주자.

val userIdCheckService : UserIdCheckService = retrofit.create(UserIdCheckService::class.java)

이렇게 언급을 해주었다면 이제 

requeust body에 들어갈 데이터 클래스와, reponse(서버에서 받는 데이터) 클래스를 생성해준다.

data class RequestIdCheckData(
    @SerializedName("loginId")
    val userId : String
)
data class ResponseIdCheckData(
    val code: Int,

    @SerializedName("message")
    val message : String
)

id중복체크를 위해 id를 서버에 요청할 것이고, 반환 가능한지 상태코드와 해당메세지를 반환 받을 것이다.

 

4.  해당 클래스에서 api 연결

binding.createAccountCheckRepetitionButton.setOnClickListener {


    val inputId = binding.createAccountIdEdittext.text.toString()
    val requestIdCheckData = RequestIdCheckData(
        userId = inputId
    )

    val call: Call<ResponseIdCheckData> = ServiceCreator.userIdCheckService.IdCheck(requestIdCheckData)

    call.enqueue(object: Callback<ResponseIdCheckData>{
        override fun onResponse(
            call: Call<ResponseIdCheckData>,
            response: Response<ResponseIdCheckData>
        ) {
            if(response.code() == 200){
                binding.createAccountIdCheckimage.visibility = View.VISIBLE
                binding.createAccountIdCheckimage.bringToFront()
                binding.createAccountIdWarningTextview.visibility = View.INVISIBLE
                isId = true
                changeConfirmButtonColor()
            }
            else{
                binding.createAccountIdWarningTextview.visibility = View.VISIBLE
            }
        }

        override fun onFailure(call: Call<ResponseIdCheckData>, t: Throwable) {
            Log.e("idcheck_server_test", "fail")
        }
    })

}

아이디 중복체크 확인을 클릭하였을 때 실행되는 메소드이다.

아이디를 입력하는 값을 변수에 지정해두고, 그 변수를

requestIdCheckData에 있는 userId에 저장한다

 

그 다음 서버에 요청한 후 응답코드를 받는다.

서버에서 성공한 응답코드는 200으로 설정했으며, 그 때 해당 아이디로 회원가입을 할 수 있다는 것을 알려준다!!

아이디 중복체크 api 연결 성공!!!

저작자표시 (새창열림)

'Android > Basic' 카테고리의 다른 글

[Android] RecyclerView  (0) 2022.04.28
[Android] ViewModel, LiveData  (0) 2022.04.27
[Android] UnknownServiceException:CLEARTEXT communication to **** not permitted ....Error  (0) 2022.04.25
[Android] Splash 화면 만들기  (0) 2022.04.24
[Android] SVG 사용하기  (0) 2022.04.23
    'Android/Basic' 카테고리의 다른 글
    • [Android] RecyclerView
    • [Android] ViewModel, LiveData
    • [Android] UnknownServiceException:CLEARTEXT communication to **** not permitted ....Error
    • [Android] Splash 화면 만들기
    쏭식
    쏭식

    티스토리툴바