안드로이드 retrofit2 사용법
먼저 이 포스팅에 오신분들은 레트로핏이 뭔지 대충 알고 오신분들이라 생각하여 간단한 소개만 하고 간단한 예제 코드만 작성해보겠습니다.
아래의 링크에 가시면 더 자세한 사용법을 보실수 있습니다.
https://square.github.io/retrofit/
Retrofit은 http 통신을 사용할때 쉽게 사용할 수 있는 라이브러리입니다.
안드로이드에서 api 서버와 통신을 할때 주로 쓰이고, 성능도 좋아서 현업에서 쓰입니다.
먼저 api서버에서 가져 온다는 가정하에 만들어보겠습니다.
아래의 api 결과 값을 받아서 텍스트뷰에 뿌려보겠습니다.
(참고로 저는 Java를 사용했습니다.)
https://jsonplaceholder.typicode.com/posts
결과
결과적으로 테스트 코드가 어떻게 작동되는지 결과부터 보여드리겠습니다.
먼저 아래의 url의 반환값을 textView에 넣어주는 간단한 예제입니다.
https://jsonplaceholder.typicode.com/posts/5
준비작업
1. manifest 인터넷 퍼미션 추가
<uses-permission android:name="android.permission.INTERNET" />
2. gradle 추가
// retrofit2
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
// Gson 변환기
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
위의 gradle을 추가해줍니다.
Gson은 api 리턴값이 json으로 오기 때문에 파싱하기 쉽도록 추가하여 사용해준 것입니다.
코드 작성
먼저 새로 만들 클래스는 3개입니다.
[2]의 인터페이스 클래스에서 요청시 보내는 값을 변수로 추가해놓았는데
이 예제에서는 파라미터 추가없이 요청할 것이기 때문에 필요없는 항목입니다.
파라미터를 추가하려면 인터페이스에서 추가해서 호출하면 됩니다.
https://jsonplaceholder.typicode.com/posts
[1]
retrofit_client.Java
public class retrofit_client {
private static final String BASE_URL = "https://jsonplaceholder.typicode.com/";
public static Retrofit_interface getApiService(){return getInstance().create(Retrofit_interface.class);}
private static Retrofit getInstance(){
Gson gson = new GsonBuilder().setLenient().create();
return new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
}
[2]
Retrofit_interface.Java
public interface Retrofit_interface {
@GET("posts/{UserID}")
Call<data_model> test_api_get(
@Path("UserID") String userid);
}
[3]
data_model.java
public class data_model {
@SerializedName("userId")
@Expose
private String userId;
@SerializedName("id")
@Expose
private String id;
@SerializedName("title")
@Expose
private String title;
@SerializedName("body")
@Expose
private String body;
public String getUserId(){
return userId;
}
public String getID(){
return id;
}
public String getTitle(){
return title;
}
public String getBody(){
return body;
}
}
호출
이제 메인 엑티비티에서 호출하여 텍스트 뷰에 넣는 과정입니다.
MainActivity.java
public class MainActivity extends AppCompatActivity {
Call<data_model> call;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView =findViewById(R.id.txt_view);
call = retrofit_client.getApiService().test_api_get("5");
call.enqueue(new Callback<data_model>(){
//콜백 받는 부분
@Override
public void onResponse(Call<data_model> call, Response<data_model> response) {
data_model result = response.body();
String str;
str= result.getUserId() +"\n"+
result.getID()+"\n"+
result.getTitle()+"\n"+
result.getBody();
textView.setText(str);
}
@Override
public void onFailure(Call<data_model> call, Throwable t) {
}
});
}
}
결과
긴글 읽어 주셔서 감사합니다.
더 궁금하신 사항은 댓글로 문의해주시면 빠르게 답변드리겠습니다.
'플랫폼 > 안드로이드 android' 카테고리의 다른 글
android 안드로이드 APK 파일 만드는 방법 (0) | 2022.05.16 |
---|---|
[안드로이드] Unable to locate adb 에러 (0) | 2021.05.25 |
안드로이드 스피너 값 가져오기 (0) | 2020.04.28 |
[안드로이드] android.content.res.Resources$NotFoundException: Resource drawable 오류 (0) | 2020.04.07 |
안드로이드[Android] 4대 컴포넌트 설명 / 예시 (0) | 2020.03.31 |
댓글