본문 바로가기
Android Studio

[Android Studio] Retrofit2 라이브러리 사용을 위한 세팅 방법

by dong_su 2024. 1. 4.

먼저, 라이브러리를 사용하기 위해 임포트 해준다.

// 네트워크 통신 라이브러리
implementation("com.squareup.retrofit2:retrofit:2.9.0")
// json 데이터 파싱 라이브러리
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
// 네트워크 통신 로그 남기는 라이브러리
implementation("com.squareup.okhttp3:logging-interceptor:4.9.0")

build.gradle파일의 dependencies에 위 코드 작성 (공식 홈페이지에 있는 버전 확인해서 사용하기)

 

<uses-permission android:name="android.permission.INTERNET" />

manifest 파일엔 위 코드 작성


public class NetworkClient {
    public static Retrofit retrofit;

    public static Retrofit getRetrofitClient(Context context){
        if(retrofit == null){
            // 통신 로그 확인할때 필요한 코드
            HttpLoggingInterceptor loggingInterceptor =
                    new HttpLoggingInterceptor();
            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

            // 네트워크 연결관련 코드
            OkHttpClient httpClient = new OkHttpClient.Builder()
                    .connectTimeout(1, TimeUnit.MINUTES)
                    .readTimeout(1, TimeUnit.MINUTES)
                    .writeTimeout(1, TimeUnit.MINUTES)
                    .addInterceptor(loggingInterceptor)
                    .build();
            // 네트워크로 데이터를 보내고 받는
            // 레트로핏 라이브러리 관련 코드
            retrofit = new Retrofit.Builder()
                    .baseUrl(Config.DOMAIN)
                    .client(httpClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
        }
        return retrofit;
    }

}

api 패키지 생성 - NetworkClient 클래스 생성 후 위 코드 작성한다. 수정 할 부분은 두 곳 뿐이다. 

 

1. 통신 로그 확인 코드 마지막 부분 = BODY 또는 BASIC BODY

  • BODY = 헤더와 바디 로깅 (디버깅에 유용, 바디가 보이기 때문에 보안상 안좋다)
  • BASIC = 헤더 부분만 로깅 (덜 세부적임 , 보안상 좋다)

 

2. 레트로핏 라이브러리 관련 코드 baseUrl 부분 = Config.DOMAIN 또는 Config.DAMAIN_LOCAL

Config 클래스 안에 상수로 처리한 변수들이 있는데,

  • DOMAIN = 도메인주소(배포한 주소)로 요청할 때 사용 
  • DOMAIN_LOCAL = localhost 주소로 요청할 때 사용

 

이후 api 패키지 안에 요청할 api 종류 마다 인터페이스를 만들면 된다. 다음 글 참고