Develop/Android
Android http Retrofit 사용하기
dlsdnd345
2016. 2. 13. 23:33
Android http Retrofit 사용하기

안녕하세요. android http volley 라이브러리를 사용 했는데 , 최근에 retrofit 이 좋다는 이야기들이 많아서 바꾸어 보려고 포스트를 작성하고 있습니다 .
무엇이 바뀌고 , 좋아졌는지를 먼저 알아보는것이 우선인것 같습니다 .
1. 어노테이션을 통한 가독성 증가 2. 속도 증가

위 그래프를 보면 속도면에서 굉장히 좋은 것을 볼 수 있습니다 .
출처 : http://instructure.github.io/blog/2013/12/09/volley-vs-retrofit/
1. 준비 과정
|
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.squareup.retrofit:retrofit:1.9.0'
}
|
cs |
retrofit 라이브러리를 추가 합니다 .
2. 사용방법
1. VO 생성
통신을 통하여 받아 파싱할 데이터 VO 를 생성 합니다. 필자는 git api 호출 테스트를 해보기 위해서 아래와 같이 작성 하였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class Contributor {
String login;
int contributions;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public int getContributions() {
return contributions;
}
public void setContributions(int contributions) {
this.contributions = contributions;
}
}
|
cs |
2. Interface 생성
|
public interface GitHubService {
@GET("/repos/{owner}/{repo}/contributors")
void contributors(
@Path("owner") String owner,
@Path("repo") String repo,
Callback<List<Contributor>> callback
);
}
|
cs |
위 코드가 Retrofit에서 중요한 코드 입니다 . 메서드 매칭을 통해서 데이터를 주고 받고 api 호출하게 됩니다. 어노테이션을 통해서 가독성도 좋아지고 코드도 깔금해 졌습니다.
@GET : 호출할 url @Path : url 을 통해 전달될 Value Callbak : 비동기 처리를 통해 api 데이터를 받기위한 콜백 메서드
3. Retrofit 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/**
* Gson 컨버터 이용
*/
Gson gson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();
/**
* 레트로핏 설정
*/
RestAdapter restAdapter = new RestAdapter.Builder()
//로그 레벨 설정
.setLogLevel(RestAdapter.LogLevel.FULL)
//BASE_URL 설정
.setEndpoint(GitHubService.API_URL)
//Gson Converter 설정
.setConverter(new GsonConverter(gson))
.build();
|
cs |
Retrofit 설정을 보시면 굉장히 유연한것 같습니다 .
LogLevel : 로그를 자세히 , 간단하게 옵션을 통해서 볼수 있습니다. Endpoint : base_url 설정 Converter : (기본 Gson ) Converter 는 json , xml 파싱에 따라 변경 할 수 있습니다.
위와 같이 설정을 통해서 필요한 옵션을 선택적으로 변경 할 수 있습니다.
4. CallBack 메서드 생성
마지막으로 설정을 통해 api 호출 콜백 메서드를 설명드리겠습니다 .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
/**
* 통신 콜백 메서드
*/
restAdapter.create(GitHubService.class).contributors("square", "retrofit", new Callback<List<Contributor>>() {
@Override
public void success(List<Contributor> contributors, Response response) {
Log.i(TAG, contributors.get(0).getLogin() + " (" + contributors.get(0).getContributions() + ")");
}
@Override
public void failure(RetrofitError error) {
Log.e(TAG, error.toString());
}
});
|
cs |
코드를 보면 굉장히 깔끔 합니다 .
파라미터를 통해 전달할 값이 들어가고 콜백메서드를 통해서 비동기 처리를 통하여 데이터를 받고 있습니다 . 파싱또한 기본 내장 Gson 을 통해서 VO 만 맞춰주면 자동으로 파싱작업을 해주어서 편리 한것 같습니다 .
|