먼저, 라이브러리를 사용하기 위해 임포트 해준다.
// 네트워크 통신 라이브러리
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 종류 마다 인터페이스를 만들면 된다. 다음 글 참고
'Android Studio' 카테고리의 다른 글
[Android Studio] 네트워크로 데이터 처리할 때 사용하는 프로그레스 다이얼로그 만들기 (1) | 2024.01.04 |
---|---|
[Android Studio] Retrofit2 라이브러리를 이용한 POST로 API 호출하기 (1) | 2024.01.04 |
[Android Studio] Volley 라이브러리로 통신 시 Header에 데이터 세팅하는 방법 (1) | 2024.01.03 |
[Android Studio] Volley 라이브러리를 이용한 POST 통신 방법 (body에 json 보내기) (2) | 2024.01.03 |
[Android Studio] RecyclerView 페이징 처리하기 (0) | 2024.01.03 |