[Android] retrofit2 기본 설정

원준·2023년 7월 20일

Android Studio

목록 보기
30/40
post-thumbnail

retrofit2 ?

  • 통신 라이브러리 중 가장 많이 사용되는 대표적인 라이브러리
  • AsyncTask 없이 Background Thread 실행 -> Callback을 통해 Main Thread에서 UI 업데이트

가장 기본이 되는 설정을 해보자!

  1. 이전 네트워크 관련 설정은 똑같이 설정해주자!

  2. build.gradle에 필요한 라이브러리를 추가하자.

// Retrofit 라이브러리
implementation 'com.squareup.retrofit2:retrofit:2.9.0'

// Gson 변환기 라이브러리
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

// Scalars 변환기 라이브러리
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.0'
  1. api/NetworkClient.Class를 생성하자.

    • http 통신간 연결하는 코드다. 다른 URL과 연결하는것 또한 상관없이 모두 동일하게 실행되니 알고있자.
    public class NetworkClient {
    
         public static Retrofit retrofit;
    
         public static Retrofit getRetrofitClient(Context context){
             if(retrofit == null){
                 // 네트워크 통신한, 로그를 확인하는 코드
                 // http 로깅 셋팅
                 HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
                 loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    
                 // 네트워크 연결시키는 코드
                 OkHttpClient httpClient = new OkHttpClient.Builder()
                         .connectTimeout(1, TimeUnit.MINUTES) //네트워크 연결 하는 시간을 최대 1분으로 설정
                         .readTimeout(1, TimeUnit.MINUTES) // 네트워크를  읽는데 시간을 최대 1분으로 설정
                         .writeTimeout(1, TimeUnit.MINUTES) //
                         .addInterceptor(loggingInterceptor)
                         .build();
    
                 retrofit = new Retrofit.Builder()
                         .baseUrl(Config.BASE_URL) //Config에 작성된 url을 가져온다.
                         .client(httpClient)
                         .addConverterFactory(GsonConverterFactory.create())
                         .build();
             }
             return retrofit;
         }
     }

기본 셋팅 완료!

  • 사용하기 전에 완전하게 완료된건 아니지만, 보내는/받는 데이터, Restful API의 주소에 따라서 변경되는 부분이기때문에 설정해야될게 더 많다!
  • 하지만, 위 셋팅의 경우 어떤 API와 연결하든 같은 코드를 사용하니 셋팅에 대해 알고있자!
profile
공부해보자

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

아주 유익한 내용이네요!

답글 달기