CÁCH LẤY DỮ LIỆU TỪ WEBSERVICE

  -  

Bài này là 1 phần của khóa đào tạo và huấn luyện xây dựng căn uống bản Android áp dụng ngôn ngữ Kotlin. quý khách hàng đang thừa nhận được rất nhiều cực hiếm duy nhất từ khóa học này nếu khách hàng thao tác tuần trường đoản cú qua từng bài học kinh nghiệm. Tất cả các bài học của khoá học tập được liệt kê bên trên trang trình làng khóa học thiết kế căn bạn dạng Android áp dụng ngữ điệu Kotlin.You watching: Cách đem dữ liệu tự webserviceQuý Khách vẫn xem: Cách mang dữ liệu tự webservice

Bài này là một trong những phần của seri các bài xích hướng dẫn bạn desgin thông sang 1 vận dụng để dìm tài liệu về những tài sản bán bên trên sao Hỏa. Ứng dụng dìm dữ liệu trường đoản cú internet và hiển thị dữ liệu vào RecyclerView. Chúng tôi khuyên ổn bạn nên học tập tất cả các bài bác theo tuần từ bỏ, bởi vì nó được tiến hành thông qua các trách nhiệm theo mỗi bước.

Bạn đang xem: Cách lấy dữ liệu từ webservice

Các bài bác trong seri này:

Giới thiệu

Phần Khủng ngẫu nhiên vận dụng nào bạn tạo đã đề nghị liên kết cùng với internet sinh sống một số thời điểm. Trong bài xích này và phần đa bài xích sau nữa, bạn gây ra một áp dụng kết nối cho web service nhằm dấn và hiển thị dữ liệu. Quý khách hàng cũng tạo ra mọi gì bạn làm việc được trường đoản cú các bài xích trước về ViewModel, LiveData, và RecyclerView.

Trong bài xích này, chúng ta thực hiện những tlỗi viện được cộng đồng phát triển nhằm xuất bản lớp mạng. Điều này góp dễ dàng hóa rất nhiều bài toán nạp dữ liệu với hình hình ảnh, với cũng giúp vận dụng vâng lệnh vài thưởng thức tốt nhất có thể trong Android, chẳng hạn như Việc cài các hình hình ảnh trên luồng background cùng lưu giữ trợ thì các hình hình ảnh được cài. Với những phần ko đồng bộ hoặc không xẩy ra chặn vào mã, ví như thao tác làm việc với lớp web service, các bạn sẽ kiểm soát và điều chỉnh áp dụng áp dụng coroutines của Kotlin. Bạn cũng trở thành cập nhật UI của ứng dụng giả dụ mạng đủng đỉnh hoặc không tồn tại mạng, nhằm cho người cần sử dụng biết phần nhiều gì đã xảy ra.

Bạn nên biết trước gần như gì

Cách chế tác với thực hiện Fragment.Cách điều phối giữa các Fragment, với thực hiện safeArgs nhằm truyền tài liệu giữa những Fragment.Cách sử dụng các yếu tắc phong cách thiết kế bao gồm ViewModel, ViewModelProvider.Factory, LiveData, với những phnghiền biến đổi LiveData.Cách thực hiện coroutines cho các các bước phải thời gian.

quý khách hàng đã học được gì

REST web service là gì.

quý khách sẽ làm được gì

Chỉnh sửa vận dụng starter nhằm tạo ra một kinh nghiệm website service API cùng cách xử trí những bình luận.Thực hiện tại lớp mạng mang lại áp dụng áp dụng thư viện Retrofit.Phân tích tài liệu phản hồi JSON tự web service thành các LiveData trong vận dụng cùng với việc thực hiện thỏng viện Moshi.Sử dụng các hỗ trợ của Retrofit đến coroutines nhằm đơn giản dễ dàng hóa mã.

Trong bài bác này ( với các bài xích sau), các bạn sẽ thao tác cùng với vận dụng starter, call là MarsRealEstate, hiển thị các tài sản nhằm buôn bán trên sao Hỏa. Ứng dụng này kết nối với website service nhằm thừa nhận cùng hiển thị tài liệu gia tài, bao gồm những đọc tin chi tiết nlỗi giá cùng tài sản như thế nào giành riêng cho bán hoặc dịch vụ thuê mướn. Các hình hình họa đại diện cho mỗi tài sản là các bức ảnh đời từ thực sao Hỏa được chụp từ những tàu khám phá sao Hỏa của NASA.


*

Phiên phiên bản áp dụng bạn thiết kế vào bài xích này sẽ không tồn tại tầm nhìn trực quan: nó triệu tập vào phần lớp mạng của ứng dụng liên kết với internet cùng cài những dữ liệu thô về gia sản, sử dụng web service. Để bảo đảm rằng dữ liệu được trao và so với đúng đắn, các bạn sẽ in con số tài sản trên sao Hỏa vào một TextView:


*

Kiến trúc đến áp dụng MarsRealEstate có nhị mô-đun chính:

Một Fragment tổng quan tiền, cất một screen dạng lưới của những hình ảnh tài sản, được xây đắp vào một RecyclerView.Một Fragment cụ thể, chứa công bố về mỗi gia tài.


*

Ứng dụng tất cả một ViewModel cho mỗi Fragment. Trong bài bác này, chúng ta tạo thành lớp hình thức mạng, với ViewModel tiếp xúc trực tiếp với lớp mạng này. Vấn đề này tựa như cùng với hầu hết gì các bạn đã làm cho làm việc bài trước lúc ViewModel tiếp xúc cùng với các đại lý tài liệu Room.

ViewModel tổng quan liêu bao gồm trách nhiệm Call đến lớp mạng để dìm thông báo nhà đất trên sao Hỏa. ViewModel chi tiết lưu giữ ban bố chi tiết về một miếng bất động sản được hiển thị vào Fragment cụ thể. Với mỗi ViewModel, các bạn áp dụng LiveData cùng với data binding bao gồm phân biệt vòng đời để cập nhập lại UI vận dụng lúc dữ liệu biến đổi.

Xem thêm: Cách Tắt Action Center Trong Win 7, Quản Lý Action Center Trong Windows 7

quý khách áp dụng yếu tắc navigation cho tất cả vấn đề điều phối giữa hai Fragment, cùng cũng truyền gia tài được lựa chọn nhỏng là một trong những đối số.See more: Tài Liệu Học Kế Toán Thực Hành Trên Cả Sổ Sách Và Máy Tính, Học Thực Hành Kế Toán Tổng Hợp Thực Tế Tốt Nhất

Bước 1: Khám phá những Fragment cùng navigation

Xem xét app/java/MainActivity.kt. Ứng dụng áp dụng các Fragment cho cả nhị màn hình hiển thị, vì chưng vậy chỉ gồm quá trình cho Activity là mua layout cho Activity.Xem xét app/res/layout/activity_main.xml. Layout Activity là công ty thiết lập nhị Fragment, được khái niệm trong tệp navigation. Layout này khởi sinh sản một NavHostFragment cùng kết phù hợp với trình quản lý navigation cùng với tài nguyên nav_graph.Mngơi nghỉ app/res/navigation/nav_graph.xml. Tại phía trên chúng ta cũng có thể thấy quan hệ navigation thân hai Fragment. Navigation graph với điểm bắt đầu là overviewFragment, vì vậy overview Fragment được khởi chế tác khi áp dụng được khởi chạy.

Bước 2: Khám phá những tệp mã Kotlin với data binding

Trong form Project, mở rộng app > java. Lưu ý rằng vận dụng MarsRealEstate bao gồm tía gói thư mục: detail, network, với overview. Ba gói này tương ứng với tía nhân tố chính của ứng dụng: Fragment overview cùng detail, với mã mang lại lớp mạng.


*

Msống tệp app/java/overview/OverviewFragment.kt. OverviewFragment khởi chế tạo ra OverviewViewModel sau, tức thị OverviewViewModel được sinh sản làm việc lần đầu tiên nó được áp dụng. Xem xét cách thức onCreateView(). Phương thơm thức này lồng layout fragment_overview sử dụng data binding, tùy chỉnh thiết lập công ty mua vòng đời với chính nó (this), và gán biến viewModel trong đối tượng người dùng binding của nó. Bởi vày chúng ta gán nhà download vòng đời, ngẫu nhiên LiveData được áp dụng trong data binding đang auto được quan sát và theo dõi bất cứ sự biến hóa như thế nào, cùng UI sẽ tự động update lại tương xứng.Mlàm việc tệp app/java/overview/OverviewViewModel. Bởi vị các ý kiến là 1 LiveData cùng bạn gán vòng đời đến biến binding, bất cứ biến đổi như thế nào sẽ được update trên UI của ứng dụng.Xem xét khối hận init. lúc ViewModel được chế tạo, nó call cách thức getMarsRealEstateProperties().Xem xét cách tiến hành getMarsRealEstateProperties(). Trong vận dụng starter, phương thức này chứa một ý kiến giữ lại chỗ. Mục đích bài bác này là update lại bình luận LiveData bên trong ViewModel áp dụng tài liệu thực cơ mà các bạn dìm tự internet.Mlàm việc tệp app/res/layout/fragment_overview.xml. Đây là layout mang đến Fragment overview nhưng bạn sẽ thao tác vào bài bác này, và nó bao gồm cả data binding mang lại ViewModel. Nó khái báo OverviewViewModel và tiếp nối link những bình luận từ bỏ ViewModel vào TextView. Trong các bài bác sau, các bạn thay thế TextView bằng một dạng lưới những hình hình ảnh vào một RecyclerView.Biên dịch cùng chạy áp dụng. Tất cả những gì chúng ta thấy vào phiên phiên bản hiện nay của vận dụng là ý kiến - "Set the Mars API Response here!"


*

Dữ liệu nhà đất sao Hỏa được lưu trữ bên trên một web hệ thống, nlỗi một REST website service. Web service áp dụng phong cách thiết kế REST, được phát hành áp dụng các nhân tố cùng giao thức website cơ bản.

Quý khách hàng chế tác một tận hưởng cho web service vào phương pháp tiêu chuẩn trải qua những URI. URL website thân quen thực tiễn cũng là 1 loại của URI, và cả nhị phần nhiều được sử dụng thay thế sửa chữa cho nhau nhìn trong suốt khóa này. lấy một ví dụ, trong ứng dụng cho bài bác này, chúng ta nhận được tất cả dữ liệu trường đoản cú VPS sau đây:

https://android-kotlin-fun-mars-VPS.appspot.com

Nếu chúng ta gõ URL sau đây vào trình trông nom của người tiêu dùng, các bạn sẽ nhận ra một danh sách những tài sản bất động sản tất cả sẵn bên trên sao Hỏa!

https://android-kotlin-fun-mars-hệ thống.appspot.com/realestate

Phản hồi xuất phát từ 1 website service là những định hình thịnh hành trong JSON, một định hình đàm phán mô tả cho tài liệu tất cả cấu tạo. Quý khách hàng tìm hiểu thêm về JSON trong trọng trách tiếp theo sau, dẫu vậy rất nhiều, đối tượng JSON là 1 trong tập đúng theo những cặp khóa-cực hiếm, thỉnh phảng phất được call là dictionary, một hashmap, hoặc mảng kết hợp. Một tập vừa lòng những đối tượng người sử dụng JSON là 1 trong mảng JSON, với các bạn nhận được mảng này dưới dạng một phản hồi từ website service.

Để nhận dữ liệu này vào vào vận dụng, ứng dụng cần thiết lập liên kết mạng cùng dàn xếp với hệ thống kia, với tiếp nối dấn và đối chiếu tài liệu ý kiến vào vào một định hình mà lại áp dụng rất có thể thực hiện. Trong bài xích này, chúng ta thực hiện một thỏng viện REST, được Gọi Retrofit nhằm tạo thành liên kết này.

Cách 1: Thêm Retrofit dependencies vào Gradle

Mlàm việc tệp build.gradle (Module: app).Trong phần dependencies, cấp dưỡng những loại sau đây cho các thỏng viện Retrofit:

implementation "com.squareup.retrofit2:retrofit:$version_retrofit"implementation "com.squareup.retrofit2:converter-scalars:$version_retrofit"Lưu ý rằng số phiên bản được tư tưởng riêng rẽ trong tệp Gradle của dự án. Dependency thứ nhất là mang đến thư viện Retrofit 2, với dependency trang bị hai là cho trình đổi khác Retrofit ko xác định. Trình chuyển đổi này chất nhận được Retrofit trả về công dụng JSON như một chuỗi String. Hai thư viện này thao tác với mọi người trong nhà.

Nhấn Sync Now để biên dịch lại dự án với các dependency new.

Cách 2: Triển knhì một MarsAPIService

Retrofit tạo ra một API cho áp dụng dựa vào câu chữ từ bỏ website service. Nó nạp tài liệu từ bỏ website service với chuyển nó sang 1 thư viện đổi khác đơn nhất, mà lại biết phương pháp để đối chiếu dữ liệu và trả về dưới dạng những đối tượng người tiêu dùng có ích. Retrofit bao gồm những cung cấp được tích vừa lòng cho những định hình dữ liệu web phổ cập nlỗi XML với JSON. Retrofit tạo phần đông những lớp mạng cho bạn, bao hàm những chi tiết đặc biệt nlỗi việc thực hiện những từng trải trên những luồng bên dưới background.

Xem thêm: Cách Pha Bột Nghệ Để Uống Tinh Bột Nghệ Tốt Cho Cơ Thể, Uống Tinh Bột Nghệ Đúng Cách Như Thế Nào

Lớp MarsApiService bảo quản lớp mạng đến ứng dụng, sẽ là, API mà lại ViewModel đang sử dụng để tiếp xúc với web service. Đây là lớp mà bạn cần thực hiện những API dịch vụ Retrofit.See more: 5 Cách Xây Dựng Quy Trình Bán Hàng Của Công Ty Sản Xuất, Sơ Đồ Quy Trình Kinch Doanh Của Doanh Nghiệp Thương Mại

Mngơi nghỉ tệp app/java/network/MarsApiService.kt. Ngay bây giờ tệp này chỉ đựng một thứ: một hằng cho URL cửa hàng cho website service.Ngay sau dưới bài toán Gọi đến builder Retrofit, định nghĩa một hình ảnh (interface) để tư tưởng giải pháp Retrofit thao tác làm việc với website server áp dụng những từng trải HTTPhường. Knhị báo retrofit2.http.GET và retrofit2.call Khi được trải đời.

interface MarsApiService {