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 |