implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:3.8.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
첫번째는 레트로핏 통신을 위해 필수적이고
두번째는 통신 결과를 json형태로 보기위해 선택적으로 추가 한 것입니다..
세, 네번째는 로그에 찍히도록 하기 위해 추가해주었습니다.
자신의 baseUrl 위쪽에 먼저 적어 둡니다.
public class RetrofitClient {
private static RetrofitClient instance = null;
private static RetrofitAPI retrofitAPI;
private static final String baseUrl = "http://자신의 Url";
public RetrofitClient() {
//로그를 보기 위한 Interceptor
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(interceptor)
.build();
//retrofit 설정
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client) //로그 기능 추가
.build();
retrofitAPI = retrofit.create(RetrofitAPI.class);
// Log.d("TEST", "실행 완료");
}
public static RetrofitClient getInstance() {
if (instance == null) {
instance = new RetrofitClient();
}
return instance;
}
public static RetrofitAPI getRetrofitInterface() {
return retrofitAPI;
}
}
addConverterFactory 는 응답을 json 형태로 변환하게 해줍니다.
public interface RetrofitAPI {
@POST("/login")
Call<LoginResponse> getLoginResponse(@Body LoginRequest loginRequest);
// getLoginResponse 함수로 LoginRequest.java에 정의해준 데이터들을 서버 Body에 보낸 후 LoginResponse로 데이터를 받겠다는 의미를 가집니다.
@POST("/join")
Call<JoinResponse> getJoinResponse(@Body JoinRequest joinRequest);
@GET("/api/counts")
Call<CountsResponse> getCounts(@Header("X-AUTH-TOKEN") String token);
@POST("/api/purchase")
Call<PurchaseResponse> getPurchaseResponse(@Header ("X-AUTH-TOKEN") String token, @Body PurchaseRequest purchaseRequest);
@GET("/api/purchase")
Call<PurchaseDetailsResponse> getPurchaseDetailsResponse(@Header ("X-AUTH-TOKEN") String token);
@GET("/api/quiz")
Call<QuizResponse> getQuizResponse(@Header("X-AUTH-TOKEN") String token);
@GET("/api/quiz/check")
Call<AnswerResponse> getAnswerResponse(@Header("X-AUTH-TOKEN") String token, @Query("id") String id, @Query("answer") String answer);
@GET("/api/userpage")
Call<ArrayList<UserResponse>> getUserResponse(@Header("X-AUTH-TOKEN") String token);
}
백엔드에서 만들어둔 역할에 따른 데이터들을 가져오기 위한 부분입니다.
위 내용들은 제 프로젝트를 진행하면서 쓴 코드들입니다.
public void response() {
//초기화 시키는 단계
retrofitClient = retrofitClient.getInstance();
retrofitAPI = retrofitClient.getRetrofitInterface();
// retrofitAPI 에서 만든 함수들을 알맞게 가져오면 됩니다.
retrofitAPI.getPurchaseDetailsResponse(token).enqueue(new Callback<PurchaseDetailsResponse>() {
@Override
public void onResponse(Call<PurchaseDetailsResponse> call, Response<PurchaseDetailsResponse> response) {
if (response.isSuccessful()){
} else {
try {
Log.d("error", response.errorBody().string());
} catch (Exception e) {
e.printStackTrace();
}
}
}
//통신 실패
@Override
public void onFailure(Call<PurchaseDetailsResponse> call, Throwable t){
Log.d("fail", t.getMessage());
}
});
}
'개발' 카테고리의 다른 글
[Spring Boot ] 웹페이지 정보 -> Controller (http method) (0) | 2023.02.09 |
---|---|
[Spring Boot] 스프링부트 환경세팅 후 웹페이지 실행 (0) | 2023.02.09 |
[앱 개발 리뷰] 안드로이드 로또 앱 만들기 과정/소개 #1<오늘은 로또왕> (0) | 2021.02.24 |
🌴리액트) 책보며 따라만든 영화웹서비스 (0) | 2020.08.31 |
📖리액트) open api 이용하기 (0) | 2020.08.28 |