티스토리 뷰

android

[android] retrofit 사용방법

sulkun 2017. 8. 17. 16:16
반응형

안녕하세요 오늘은 retrofit2 간단한 예제를 살펴 보실텐데요


일단 보시요



Retrofit 라이브러리는 제가 사랑하는 Square라는 회사에서 만든 REST API통신을 위한 Android/JAVA 라이브러리 입니다.



유틸리티 어플리케이션이 아닌 좀더 큰 범위의 서비스를 사용한다면 클라이언트 <-> 서버 통신은 빼놓을수 없이 구현해야 할것입니다.

그만큼 안드로이드 어플리케이션에서는 서버와의 통신이 많을것이고 이를 잘 다루어야 합니다.


AsyncTask,HttpUrlConnection을 사용해서 직접 네트워크 통신을 구현하려면 여러가지 귀찮은 작업들이 많습니다.

1. 네트워크 통신 연결/해제

2. 가져온 데이터 파싱

3. Json통신의 경우, Json데이터<-> Class 변환

4. 각종 에러처리


API통신을 이용하는 서비스에서 정말 편하게 사용할 수 있는 Retrofit을 소개해드립니다.



사용 예시



GitHub에서 특정 사용자의 repository 목록을 가져오는 통신이 있다고 가정해보겠습니다.

API주소는 'http://api.github.com/users/사용자 ID/repos' 입니다.

만약 사용자 ID에 ParkSangGwon를 넣을경우 아래와 같은 리턴 Json값을 받아볼 수 있습니다.



출처: http://gun0912.tistory.com/30 [박상권의 삽질블로그]


[

{
"id":35079604,
"name":"DLog",
"full_name":"ParkSangGwon/DLog",
"owner":{...},
"private":false,

},

{
"id":35081014,
"name":"ObjectUtils",
"full_name":"ParkSangGwon/ObjectUtils",
"owner":{...},
"private":false,


},

{
"id":35081259,
"name":"UpdateCheck",
"full_name":"ParkSangGwon/UpdateCheck",
"owner":{...},
"private":false,

}
]


우선 gradle 에 라이브러리를 추가해야되는데요


dependencies {

compile 'com.squareup.retrofit2:retrofit:2.1.0' // Retrofit
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3' // Gson 변환을 위한 converter
}



1. Interface Class 선언하기



user를 파라미터로 받아 API URL을 완성해서 GET방식으로  요청할 것입니다.


public interface GitHubService {
@GET("/users/{user}/repos")
List<Repo> listRepos(@Path("user") String user);
}


2. Interface Class 구현하기


Retrofit에서 제공하는 restAdapter를 이용해서 Base URL(https://api.github.com)을 지정해주고 GitHubService 변수를 만들어 줍니다.


RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.build();

GitHubService service = restAdapter.create(GitHubService.class);



3. Repo클래스 만들기


앞서 예시에서 호출했을때 나온 json을 받아줄 클래스를 생성해줍니다.

json의 키에 해당하는 값들을 변수 이름으로 지정해주면 됩니다.



public class Repo {

int id;
String name;
String full_name;
...

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getFull_name() {
return full_name;
}

public void setFull_name(String full_name) {
this.full_name = full_name;
}
}



4. 서비스 호출해서 리스트 가져오기


1번에서 선언한 함수를 사용하면 3번의 Repo클래스들의 리스트형태를 결과로 받아 볼수 있습니다.



List<Repo> repos = service.listRepos("ParkSangGwon");



물론 GET방식 이외에도 POST,PUT,DELETE,HEAD등의 다양한 Request방식을 지원합니다.

GET방식의 경우 위의 예제방식 이외에도 Query방식으로도 호출할수 있습니다.


Retrofit에서 사용할수있는 모든 방식은 공식홈페이지에서 확인해 보실 수 있습니다.


http://devflow.github.io/retrofit-kr/


[안드로이드]Retrofit에서 Interceptor를 이용해 쿠키/세션 유지하는 방법

출처: http://gun0912.tistory.com/30 [박상권의 삽질블로그]

반응형
댓글