Android2022. 2. 14. 10:19
Retrofit

Volley같은 네트웍통신의 다양한 예외케이스들을 처리해주면서 사용하기도 편리하게 해주는 라이브러리중에 아주 유명한 Retrofit라이브러리의 사용법에 대해 정리한다.

1. build.gradle에 dependency추가

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'


2. manifest에 permission 추가

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

3. 서버주소가 HTTPS가 아니라 HTTP주소를 사용한다면 application tag에 usesCleartextTraffic true

<application
  android:name="ApplicationName"
  ...
  android:usesCleartextTraffic="true"
  />

4. interface 추가

public interface PostServiceApi {
   @GET("/posts")
   Call<List<POSTDATA>> getPost(@Query("userId") String id);
}

5. Data model 정의

public class POSTDATA {
   @SerializedName("userId")
   private int userId;

   @SerializedName("title")
   private String title;

   @SerializedName("content")
   private String content;

   int getUserId() {
      return userId;
   }

   void setUserId(String userId) {
      this.userId = userId;
   }

   String getTitle() {
      return title;
   }

   ...

}

6. 호출 및 응답처리

Retrofit retrofit = new Retrofit.Builder()
   .baseUrl("http://www.myservice.com/posts")
   .addConverterFactory(GsonConverterFactory.create())
   .build();


PostServiceAPI postApi = retrofit.create(PostServiceAPI.class);

postApi.getPost("100").enqueue(new Callback<List<POSTDATA>>() {
   @Override
   public void onResponse(Call<List<POSTDATA>> call, Response<List<POSTDATA>> response) {
      if (response.isSuccessful()) {
         Log.e( TAG, "타이틀" : response.title());
      }
   }
   @Override
   public void onFailure(Call<List><POSTDATA>> call, Throwable t) {
      t.printStackTrace();
   }
});

참고
Request유형별 정의방법 안내 : https://jaejong.tistory.com/38
Posted by 삼스