Volley 와 같이 안드로이드에서 네트워크를 사용할 때 사용하는 라이브러리 중
retrofit을 설치할 때 환경설정에 대해 알아보자.
1. build.gradle 에 라이브러리 설치.
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation("com.squareup.okhttp3:logging-interceptor:4.9.0")
}
2. res-xml 디렉토리에 network-security-config 파일 생성
<?xml version="1.0" encoding="utf-8" ?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">*.googleapis.com</domain>
</domain-config>
</network-security-config>
3. AndroidManifest.xml 수정
4. 다음과 같이 디렉토리 구성
5. NetworkClient 클래스 구성
public class NetworkClient {
public static Retrofit retrofit;
public static Retrofit getRetrofitClient(Context context){
if(retrofit == null){
HttpLoggingInterceptor loggingInterceptor =
new HttpLoggingInterceptor();
loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BASIC);
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.BASE_URL)
.client(httpClient)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
6. Config 클래스 구성
package com.사용자명.memo.config;
public class Config {
public static final String BASE_URL = "도메인";
public static final String TEST_URL = "테스트 (로컬) 도메인";
public static final String PREFERENCES_NAME = "앱 이름";
}
기본적인 환경설정은 이 정도로 마치고
실제로 불러오는 코드의 예시는 아래 더보기로 작성해두었다.
더보기
Retrofit retrofit =
NetworkClient.getRetrofitClient(RegisterActivity.this);
UserApi api = retrofit.create(UserApi.class);
User user = new User(email, password, nickname);
Call<RegisterRes> call = api.register(user);
call.enqueue(new Callback<RegisterRes>() {
@Override
public void onResponse(Call<RegisterRes> call, Response<RegisterRes> response) {
dismissProgress();
// 200 OK 일때,
if(response.isSuccessful()){
RegisterRes registerRes = response.body();
// 억세스토큰은, 이제 앱에서, api 호출할때마다 헤더에 넣어서 보내야한다.
// 따라서 억세스토큰은, 쉐어드프리퍼런스에 저장해 놓는다.
SharedPreferences sp =
getApplication().getSharedPreferences(Config.PREFERENCES_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("accessToken", registerRes.getAccess_token());
editor.apply();
finish();
} else if (response.code() == 400){
} else {
Toast.makeText(RegisterActivity.this, "에러발생 : "+response.code(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<RegisterRes> call, Throwable t) {
// 네트워크 자체 문제로 실패!
dismissProgress();
}
'Android' 카테고리의 다른 글
Android Studio - (gradle) AndroidX 에러 해결 (0) | 2022.07.25 |
---|---|
Android Studio - Retrofit 라이브러리를 이용하여 POST로 API 호출하여 사용하기 (0) | 2022.07.21 |
Android Studio - 기기의 카메라 / 앨범 사용하기 (0) | 2022.07.21 |
Android Studio - Recyclerview 페이징 처리 (0) | 2022.07.20 |
Android Studio - 이미지 처리를 위한 Glide 사용법 (0) | 2022.07.20 |
댓글