[Android] Retrofit2 사용해보기

찐찐·2022년 6월 28일
0

Retrofit 사용하기

초기 설정

  1. manifest에 Internet permission 주기
<uses-permission android:name="android.permission.INTERNET" />
  1. gradle.app에 implementation 넣기
implementation 'com.squareup.retrofit2:retrofit:2.7.2'
implementation 'com.squareup.retrofit2:converter-gson:2.7.2'

사용하기

  1. Retrofit instance 생성
Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://10.0.2.2:5000/api/") // base_url
                .addConverterFactory(GsonConverterFactory.create())
                .build();
  • baseUrl: 기본이 되는 url을 넣어주면 된다.
    • 안드로이드 애뮬레이터는 **127.0.0.110.0.2.2 로 바뀌어서 사용**된다! 유의하기
  1. 기능을 사용하기 위해 service interface 만들기
interface SignUpService {
    @POST("signup/id-check") // URL
    Call<ResponseBody> checkId(@Body JsonObject body);
}
  • @Body 데코레이터를 사용해 바디를 실어보낼 수 있다.
    • JSONObjecy 를 사용하면 포맷이 달라 오류가 나니 gson에서 제공하는 JsonObject 를 사용한다.
  1. service Instance 생성
SignUpService service = retrofit.create(SignUpService.class);
  1. 요청 보내기
Call<ResponseBody> call = service.checkId(body);

call.enqueue(new Callback<ResponseBody>() {
        @Override
        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
            if (response.isSuccessful()) {
								// 성공했을 때 (이 안에서 자유롭게 사용하기)
                try {
                    Log.d(TAG, response.body().string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            else {
                try {
                    Log.d(TAG, "Fail " + response.errorBody().string());
                } catch (IOException e)
                      e.printStackTrace();
                }
            }
        }

        @Override
        public void onFailure(Call<ResponseBody> call, Throwable t) {
						// 실패했을 때
            Log.e(TAG, "onFailure: e " + t.getMessage());
        }
		}
);
  • res.body().string()은 string 타입이라 자유롭게 사용하기 번거로우므로 JsonObejct 타입으로 파싱해서 사용한다.
    1. JsonParser instance 생성

      JsonParser jsonParser = new JsonParser();
    2. 파싱하기

      JsonObject res = (JsonObject) jsonParser.parse(response.body().string());

      이제 JSON 포맷으로 바뀌어 자유롭게 활용할 수 있다.

profile
백엔드 개발자 지망생

0개의 댓글