">

Retrofit


1. 인터넷을 사용하기 때문에 manifests에 퍼미션을 등록 합니다. 

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


2. gradle에 retrofit를 추가한다. 이후 gson도 사용할 예정이라 미리 추가 했습니다. 

compile 'com.google.code.gson:gson:2.7'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'


3. Interface를 하나 생성한다. 예제로는 ApiService.class 파일에 만들도록 하겠습니다. 

아래 Url은 json 형태의 데이터를 서버로부터 미리 받을 수 있도록 만들어 놓은 사이트 입니다.  

public interface ApiService {
public static final String API_URL = "http://jsonplaceholder.typicode.com/";

@GET("comments")
Call<ResponseBody>getComment(@Query("postId") int postId);

}

@GET는 GET 방식을 의미하며 뒤의 "comments"는 URL 이후 주소를 의미 합니다. 

@Query("postId")는 url에서 ?postId= 를 의미하고, int postId는 파라미터 값을 의미 합니다. 

즉, http://jsonplaceholder.typicode.com/comments?postId=1 과 같은 url이 만들어 집니다.


4. MainActivity에서 retrofit을 호출해 보도록 하겠습니다.

public class MainActivity extends AppCompatActivity {
Retrofit retrofit;
ApiService apiService;
Call<ResponseBody> comment;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

retrofit = new Retrofit.Builder().baseUrl(ApiService.API_URL).build();
apiService = retrofit.create(ApiService.class);

comment = apiService.getComment(1);
comment.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
Log.d("Test", response.body().string());
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {

}
});
}
}


실행하면 로그로 json 형태의 데이터를 가져오는 것을 확인할 수 있습다. 

이후 gson을 통해 데이터를 간편하게 파싱하는 것을 진행하도록 하겠습니다. 

'프로그래밍 > Android' 카테고리의 다른 글

탭(Tab) 쉽게 만들어 보자  (2) 2017.05.19
AsyncTask 쉬운 따라하기  (0) 2017.05.15
Preference  (0) 2017.05.08
리스트뷰 아이템 내용 가져오기  (0) 2017.03.21
리스트뷰의 마지막 확인하기  (0) 2017.03.21

+ Recent posts