Parse Json sử dụng thư viện Retrofit

Qua bài viết này hi vọng bạn có thể hiểu và sử dụng được thư viện Retrofit. Trước giờ để kết nối và lấy dữ liệu từ 1 WebService trên Android có nhiều cách khác nhau. Có thể bạn đã từng dùng các lớp trong gói Http Apache hoặc đã từng dùng 1 số thư viện để kết nối với internet và nhận các dữ liệu từ server như Volley của Google, KSOAP …

Hôm nay tôi xin giới thiệu một thư viện vô cùng lợi ích cho việc kết nối internet và nhận dữ liệu từ server một cách dễ dàng và viết code theo mô hình chuẩn RESTFul Webservices đó là:

Retrofit (Latest version: Ver2.2.0)

Parse Json sử dụng thư viện Retrofit
Parse Json sử dụng thư viện Retrofit

Retrofit là gì?

Retrofit là một type-safe HTTP client cho Android và Java và được tạo ra bởi Square. Nó làm cho việc nhận và tải lên JSON (hoặc dữ liệu khác) một cách khá dễ dàng tới một WebService dựa trên mô hình REST. Retrofit giúp dễ dàng kết nối đến một dịch vụ REST ở trên web bằng cách dịch API thành các Interface của Java. Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách sử dụng một trong các thư viện HTTP phổ biến nhất và thường được khuyến khích sử dụng cho Android.

Thư viện mạnh mẽ này giúp bạn dễ dàng lấy dữ liệu JSON hoặc XML, sau đó phân tích cú pháp thành Plain Old Java Objects (POJOs). Các yêu cầu GET, POST, PUT, PATCH, và DELETE tất cả đều có thể được thực thi.

Giống như hầu hết các phần mềm nguồn mở khác, Retrofit được xây dựng trên nền của một số thư viện mạnh mẽ và công cụ khác. Đằng sau nó, Retrofit sử dụng OkHttp (từ cùng một nhà phát triển) để xử lý các yêu cầu mạng. Ngoài ra, Retrofit không tích hợp sẵn một bộ chuyển đổi JSON để phân tích từ JSON thành các đối tượng Java. Thay vào đó, nó hỗ trợ cho các thư viện chuyển đổi JSON sau đây để xử lý điều đó.

Các gói trang bị thêm cho phép sử dụng các bộ chuyển đổi sau đây:

  • Gson : com.squareup.retrofit2:converter-gson
  • Jackson : com.squareup.retrofit2:converter-jackson
  • Moshi : com.squareup.retrofit2:converter-moshi
  • Protobuf : com.squareup.retrofit2:converter-protobuf
  • Wire : com.squareup.retrofit2:converter-wire
  • Simple XML : com.squareup.retrofit2:converter-simplexml
  • Scalars (primitives, boxed, and String): com.squareup.retrofit2:converter-scalars

Tạo một dự án Android Studio

Mở Android Studio lên và tạo ra một dự án mới với một Empty Activity đặt tên là MainActivity.

Tạo một dự án Android Studio
Tạo một dự án Android Studio

Thêm thư viện Retrofit vào Project

Sau khi tạo một dự án mới, thêm các thư viện cần thiết của Retrofit sau đây trong build.gradle (Module) của bạn. Bao gồm thư viện Retrofit, Glide để xử lý hình ảnh và Gson của Google để chuyển đổi JSON thành POJO (Plain Old Java Objects) cũng như Gson tích hợp của Retrofit.

Bạn nhớ Sync Project with Gradle File sau khi thêm các thư viện vào.

Thêm quyền truy cập Internet vào AndroidManifest.xml

Để có thể Parse Json với thư viện Retrofit, chúng ta cần phải bao thêm quyền INTERNET trong tập tin manifest: AndroidManifest.xml.

Tạo các lớp

Trong việc nhận về JSON từ link này http://dev.ntcde.com/news/api.php?latest_news=10 . Do đó chúng ta tạo ra lớp dữ liệu sau đây:

Các bạn ném link trên vào đây http://pro.jsonlint.com cho dễ nhìn.

Các bạn ném link trên vào đây http://pro.jsonlint.com cho dễ nhìn.
Các bạn ném link trên vào đây http://pro.jsonlint.com cho dễ nhìn.

Tạo class Post

Để class Post trong packge model cho dễ quản lý.

Tạo class RetrofitClient

Để sử dụng các yêu cầu mạng đến một RESTful API bằng Retrofit, chúng ta cần tạo ra một đối tượng bằng cách sử dụng lớp Retrofit Builder và cấu hình nó với một URL cơ sở.

Tạo API Interface

Tạo API Interface đặt tên là APIService. Interface này dùng để chứa các phương thức mà chúng ta sẽ sử dụng để gọi các yêu cầu truy vấn HTTP chẳng hạn như GET, POST, PUT, và DELETE. Hãy bắt đầu với yêu cầu GET.

Tạo class ApiUtils

Class ApiUtils  dùng để khởi tạo Retrofit trong MainActivity và gọi các phương thức trong Interface APIService.

Tạo Layout để hiển thị dữ liệu

Tập tin activity_main.xml là layout cho MainActivity của chúng ta. Layout này sẽ có hai trường Button, một cái để Get Json Array và một Button để Get Json Object và một ListView để hiện thị dữ liệu.

Tạo class Custom ListView cho Item ListView

Tạo Adapter custom cho listview class PostAdapter extends BaseAdapter

Layout cho Item ListView

Layout custom cho item listview đặt tên là item_list_post.xml

Tạo Activity hiển thị chi tiết bài viết

Tạo PostDetailActivity để hiển thị chi tiết bài viết khi click vào Item trên listview, layout activity_post_detail.xml bao gồm một Webview để hiện thị bào viết.

Gửi yêu cầu GET với Retrofit 2

Trong phương thức onCreate() của MainActivity, chúng ta khởi tạo View layout và đối tượng của interface APIService .

Ở dòng private PostAdapter postAdapter; trong đoạn code trên mục đích để khởi tạo Adapter Custom Listview.

Phương thức Get Json Array với Retrofit

Ở trên có đoạn code mLvPost.setOnItemClickListener(…){…} mục đích khi click vào một Item trên ListView nó sẽ Intent dữ liệu qua PostDetailsActivity và hiển thị chi tiết bài viết đó.

Hiển thị chi tiết bài viết khi click vào item trên listview
Hiển thị chi tiết bài viết khi click vào item trên listview

Phương thức Get Json Object với Retrofit

Toàn bộ Class MainActivity

Tổng kết

Trong hướng dẫn này, bạn đã tìm hiểu về Retrofit: lý do tại sao bạn nên sử dụng nó và làm thế nào để tích hợp nó trong dự án của bạn để thực hiện các yêu cầu POST, PUT, DELETE và hủy bỏ các yêu cầu. Trong bài tiếp theo của tôi về việc sử dụng Retrofit, tôi sẽ chỉ cho bạn cách làm thế nào để tải lên tập tin.

Sử dụng Retrofit thực sự chuyên nghiệp khi bạn thực hiện các request một cách dễ dàng, việc theo chuẩn mô hình RESTFul cho các API Service khiến code rất clear và dễ maintain. Việc thực hiện các kết nối Http Retrofit sử dụng mặc định OkHttp một Lib cũng của Square và được triển khai trong các SDK rất nổi tiếng như:
Facebook SDK, Fabric (Twitter) ….

Trong bái viết sau mình sẽ hướng dẫn các bạn sử dụng phương thức POST, PUT, DELETE với Retrofit.

Xin cảm ơn!

Tham khảo

Project on Github: https://github.com/trongcong/ParseJsonWithRetrofit

Android Library: Tìm hiểu Retrofit 2.0: https://viblo.asia/hungtdo/posts/AQrMJVojM40E

Gởi dữ liệu bằng Retrofit 2 HTTP Client cho Android: https://code.tutsplus.com/tutorials/sending-data-with-retrofit-2-http-client-for-android–cms-27845

Retrofit 2: https://square.github.io/retrofit/

Gom Marker trong Android với Google Maps Android API – Google Maps Android Marker Clustering Utility Sử dụng SwipeRefreshLayout trong ứng dụng Android Hướng dẫn tạo Material Dialog Bottom Sheet Android Tạo context menu trong Android – ActionBar ActionMode.CallBack Example Retrofit và Volley thư viện nào tốt hơn Hướng dẫn sử dụng thư viện Volley trong Android Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 2 Tạo Web Service bằng PHP và MYSQL cho ứng dụng di động – Part 1 Hàm chuyển đổi Timestamp thành Datetime trong Android và JavaScript Design Patterns là gì? Tạo Project Android theo mẫu Design Patterns(Part 2)

3 thoughts on “Parse Json sử dụng thư viện Retrofit

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.