Android - Retrofit - Networking - Parse Data from API - Sử dụng thư viện Retrofit lấy dữ liệu từ API trong Android Studio
1. Tìm hiểu về Retrofit
2. Sử dụng Retrofit trong Android Studio
Bước 1: Thêm user-permission truy cập internet để kết nối internet
<uses-permission android:name="android.permission.INTERNET" />
Bước 2: Thêm dependencies cho Retrofit trong build.grade
Thêm trực tiếp trong dependencies:
compile 'com.squareup.retrofit2:retrofit:2.2.0'
Hoặc sử dụng cách sau để thêm với version mới nhất:
Nhấn Ctrl+Alt+Shift (hoặc chọn File--> Project Structure) , sau đó tìm đến Modules -->App--> Dependencies -->Chọn dấu cộng ở góc phải--> Library Dependency, Nhập retrofit và search --> chọn và OK.
Bước 3: Tạo model
Ở đây ta lấy một ví dụ về lấy dữ liệu là một json object từ API, ta cần tạo một lớp Model với các thuộc tính mô tả theo cấu trúc của json object
Ta sử dụng một công cụ online để tạo model, trước đó phải có một json data mẫu để tạo, truy cập trang:(ngoài ra ta có thể vào https://jsonformatter.curiousconcept.com/ để xem cấu trúc json object, thêm add-on Postman trong Chorme để thao tác trực tiếp với API)
http://www.jsonschema2pojo.org/
Để tạo model, copy data json vào web, sau đó đặt các thông số tùy chọn cho nó:
- tên package của project
- tên class model
- Annotation style chọn gson
--> lấy zip file model về copy vào package đã điền ở trên trong project
Lúc này sẽ xảy ra lỗi, ta cần thêm dependency cho gson
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
2. Sử dụng Retrofit trong Android Studio
Bước 1: Thêm user-permission truy cập internet để kết nối internet
<uses-permission android:name="android.permission.INTERNET" />
Bước 2: Thêm dependencies cho Retrofit trong build.grade
Thêm trực tiếp trong dependencies:
compile 'com.squareup.retrofit2:retrofit:2.2.0'
Hoặc sử dụng cách sau để thêm với version mới nhất:
Nhấn Ctrl+Alt+Shift (hoặc chọn File--> Project Structure) , sau đó tìm đến Modules -->App--> Dependencies -->Chọn dấu cộng ở góc phải--> Library Dependency, Nhập retrofit và search --> chọn và OK.
Bước 3: Tạo model
Ở đây ta lấy một ví dụ về lấy dữ liệu là một json object từ API, ta cần tạo một lớp Model với các thuộc tính mô tả theo cấu trúc của json object
Ta sử dụng một công cụ online để tạo model, trước đó phải có một json data mẫu để tạo, truy cập trang:(ngoài ra ta có thể vào https://jsonformatter.curiousconcept.com/ để xem cấu trúc json object, thêm add-on Postman trong Chorme để thao tác trực tiếp với API)
http://www.jsonschema2pojo.org/
Để tạo model, copy data json vào web, sau đó đặt các thông số tùy chọn cho nó:
- tên package của project
- tên class model
- Annotation style chọn gson
--> lấy zip file model về copy vào package đã điền ở trên trong project
Lúc này sẽ xảy ra lỗi, ta cần thêm dependency cho gson
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
Bước 4: Thêm retrofit adapter
Thêm dependency
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
Bước 5: Tạo một REST API cho Retrofit
Bước 6: chạy retrofit và lấy dữ liệu đổ lên giao diện UI
http://square.github.io/retrofit/
https://blog.robinchutaux.com/blog/a-smart-way-to-use-retrofit/
http://www.vogella.com/tutorials/Retrofit/article.html
https://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit
https://androidcoban.com/huong-dan-su-dung-thu-vien-retrofit-2-get-json-data.html
https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/
https://square.github.io/retrofit/2.x/retrofit/
http://stackoverflow.com/questions/28426154/retrofit-post-parameter
http://www.androidhive.info/2016/05/android-working-with-retrofit-http-library/
Kết luận: để sử dụng retrofit trong project Android ta phải:
- Thêm tối thiểu 3 dependency sau:
+ com.squareup.retrofit2:retrofit
+ com.squareup.retrofit2:converter-gson
+ com.squareup.retrofit2:converter-gson
- Thêm user-permission : INTERNET
- Sử dụng trang www.jsonschema2pojo.org để tảo model (dùng cái này cho nhanh, hoặc cách khác)
- Tạo interface client - API với các phương thức get,post,put,... cần thiết theo nhu cầu sử dụng
- Tạo Adapter để sử dụng retrofit, sử dụng ở bất cứ đâu cần lấy dữ liệu từ API
- Sử dụng API trên http://jsonplaceholder.typicode.com để test với JSON
Thêm dependency
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'
Bước 5: Tạo một REST API cho Retrofit
Bước 6: chạy retrofit và lấy dữ liệu đổ lên giao diện UI
http://square.github.io/retrofit/
https://blog.robinchutaux.com/blog/a-smart-way-to-use-retrofit/
http://www.vogella.com/tutorials/Retrofit/article.html
https://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit
https://androidcoban.com/huong-dan-su-dung-thu-vien-retrofit-2-get-json-data.html
https://realm.io/news/droidcon-jake-wharton-simple-http-retrofit-2/
https://square.github.io/retrofit/2.x/retrofit/
http://stackoverflow.com/questions/28426154/retrofit-post-parameter
http://www.androidhive.info/2016/05/android-working-with-retrofit-http-library/
Kết luận: để sử dụng retrofit trong project Android ta phải:
- Thêm tối thiểu 3 dependency sau:
+ com.squareup.retrofit2:retrofit
+ com.squareup.retrofit2:converter-gson
+ com.squareup.retrofit2:converter-gson
- Thêm user-permission : INTERNET
- Sử dụng trang www.jsonschema2pojo.org để tảo model (dùng cái này cho nhanh, hoặc cách khác)
- Tạo interface client - API với các phương thức get,post,put,... cần thiết theo nhu cầu sử dụng
- Tạo Adapter để sử dụng retrofit, sử dụng ở bất cứ đâu cần lấy dữ liệu từ API
- Sử dụng API trên http://jsonplaceholder.typicode.com để test với JSON
public interface DataRetrofitAPI { @FormUrlEncoded @POST("path") Call<DataModel> postData(@Field("param_key") int param_value);
}
public class DataRetrofitManager implements Callback<DataModel> { private static final String BASE_URL = "URL_here"; private DataListener listener; public interface DataListener { void commitData(Data data); void onError(); } public void registerDataListener(DataListener listener) { this.listener = listener; } public void unregisterListener() { this.listener = null; } public void start(int numberProduct) {Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); DataRetrofitAPI dataRetrofitAPI = retrofit.create(DataRetrofitAPI.class); Call<DataModel> call = dataRetrofitAPI.postData(paramKey); call.enqueue(this); } @Overridepublic void onResponse(Call<DataModel> call,Response<DataModel> response) { if (response.isSuccessful()) {listener.commitData(response.body().getData());
} else {} } @Override public void onFailure(Call<DataModel> call, Throwable t) { listener.onError(); } }
DataRetrofitManager manager;
manager = new DataRetrofitManager();manager.registerDataListener(this);
Nhận xét
Đăng nhận xét