Cách lấy dữ liệu từ webservice

Bài này là một trong những phần của khóa huấn luyện và đào tạo thiết kế căn uống bản Android sử dụng ngữ điệu Kotlin. Bạn sẽ dìm được rất nhiều quý giá nhất từ khóa học tập này nếu như khách hàng làm việc tuần tự qua từng bài học. Tất cả những bài học của khoá học được liệt kê bên trên trang giới thiệu khóa huấn luyện lập trình sẵn cnạp năng lượng bản Android thực hiện ngôn ngữ Kotlin.

You watching: Cách lấy dữ liệu từ webservice

quý khách đã xem: Cách đem tài liệu từ webservice

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

Các bài xích trong seri này:

Giới thiệu

Phần phệ ngẫu nhiên ứng dụng làm sao các bạn thi công sẽ yêu cầu liên kết cùng với internet sinh sống một số trong những thời khắc. Trong bài xích này với mọi bài bác sau nữa, bạn tạo một vận dụng liên kết mang lại website service để nhận với hiển thị tài liệu. Quý khách hàng cũng thành lập số đông gì bàn sinh hoạt được trường đoản cú các bài xích trước về ViewModel, LiveData, với RecyclerView.

Trong bài này, chúng ta sử dụng các tlỗi viện được xã hội trở nên tân tiến để xây cất lớp mạng. Như vậy giúp đơn giản hóa tương đối nhiều câu hỏi hấp thụ tài liệu cùng hình ảnh, với cũng giúp vận dụng vâng lệnh vài ba tận hưởng tốt nhất vào Android, ví dụ như vấn đề mua những hình ảnh trên luồng background và lưu giữ trợ thì các hình ảnh được download. Với những phần không đồng nhất hoặc không bị chặn vào mã, ví dụ như thao tác cùng với lớp website service, bạn sẽ kiểm soát và điều chỉnh ứng dụng thực hiện coroutines của Kotlin. quý khách hàng cũng sẽ cập nhật UI của ứng dụng nếu như mạng lờ đờ hoặc không tồn tại mạng, nhằm cho những người dùng biết hồ hết gì vẫn xảy ra.

Quý khách hàng nên tìm hiểu trước phần lớn gì

Cách chế tác cùng sử dụng Fragment.Cách điều phối giữa các Fragment, cùng áp dụng safeArgs để truyền dữ liệu giữa những Fragment.Cách sử dụng các thành phần phong cách xây dựng bao hàm ViewModel, ViewModelProvider.Factory, LiveData, cùng những phnghiền thay đổi LiveData.Cách sử dụng coroutines cho những quá trình đề xuất thời gian.

Quý Khách sẽ học được gì

REST web service là gì.

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

Chỉnh sửa vận dụng starter để tạo nên một yên cầu website service API và cách xử lý những phản hồi.Thực hiện lớp mạng mang đến ứng dụng sử dụng thư viện Retrofit.Phân tích tài liệu ý kiến JSON từ bỏ web service thành những LiveData trong vận dụng với bài toán sử dụng 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 xích này ( với các bài xích sau), bạn sẽ thao tác làm việc cùng với vận dụng starter, Hotline là MarsRealEstate, hiển thị các gia sản nhằm buôn bán trên sao Hỏa. Ứng dụng này liên kết cùng với web service để dấn cùng hiển thị tài liệu gia tài, bao gồm những công bố chi tiết nhỏng giá bán với gia sản như thế nào dành cho bán hoặc thuê mướn. Các hình hình họa đại diện thay mặt cho từng gia tài là đông đảo bức ảnh đời thực từ sao Hỏa được chụp tự các tàu tò mò sao Hỏa của NASA.


*

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


*

Kiến trúc mang lại áp dụng MarsRealEstate gồm nhì mô-đun chính:

Một Fragment tổng quan lại, chứa một màn hình hiển thị dạng lưới của những hình ảnh gia sản, được kiến tạo vào một RecyclerView.Một Fragment cụ thể, đựng thông báo về mỗi gia sản.


*

Ứng dụng gồm một ViewModel cho mỗi Fragment. Trong bài này, các bạn sản xuất lớp các dịch vụ mạng, với ViewModel giao tiếp trực tiếp cùng với lớp mạng này. Vấn đề này tương tự cùng với mọi gì bạn sẽ có tác dụng sống bài xích trước lúc ViewModel giao tiếp với các đại lý dữ liệu Room.

ViewModel tổng quan liêu bao gồm trách rưới nhiệm gọi tới trường mạng để thừa nhận công bố BDS bên trên sao Hỏa. ViewModel chi tiết giữ lại thông tin cụ thể về một miếng BDS được hiển thị vào Fragment chi tiết. Với từng ViewModel, các bạn thực hiện LiveData với data binding gồm nhận biết vòng đời để cập nhập lại UI vận dụng lúc dữ liệu đổi khác.

quý khách sử dụng nhân tố navigation cho cả câu hỏi điều phối thân hai Fragment, với cũng truyền gia sản được lựa chọn nhỏng là 1 trong đố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 thực hiện các Fragment cho cả nhì màn hình, bởi vì vậy chỉ có quá trình mang đến Activity là sở hữu layout mang lại Activity.Xem xét app/res/layout/activity_main.xml. Layout Activity là nhà sở hữu nhị Fragment, được có mang vào tệp navigation. Layout này khởi sản xuất một NavHostFragment với kết hợp với trình làm chủ navigation cùng với tài nguyên ổn nav_graph.Mở app/res/navigation/nav_graph.xml. Ở đây chúng ta có thể thấy quan hệ navigation giữa nhị Fragment. Navigation graph với điểm bắt đầu là overviewFragment, vì vậy overview Fragment được khởi tạo nên Khi ứng dụng được khởi chạy.

Bước 2: Khám phá các tệp mã Kotlin và data binding

Trong form Project, không ngừng mở rộng app > java. Lưu ý rằng áp dụng MarsRealEstate gồm tía gói thỏng mục: detail, network, và overview. Ba gói này khớp ứng với tía nguyên tố chủ yếu của ứng dụng: Fragment overview cùng detail, cùng mã đến lớp mạng.


*

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


*

Dữ liệu bất động sản sao Hỏa được tàng trữ bên trên một website hệ thống, như một REST website service. Web service áp dụng kiến trúc REST, được desgin sử dụng các yếu tố cùng giao thức web cơ bản.

Quý Khách chế tác một yên cầu đến website service trong biện pháp tiêu chuẩn trải qua các URI. URL website quen thuộc thực tế cũng là một trong những loại của URI, cùng cả hai đầy đủ được thực hiện sửa chữa thay thế lẫn nhau trong veo khóa này. ví dụ như, vào áp dụng mang lại bài bác này, bạn nhận được toàn bộ dữ liệu từ bỏ VPS sau đây:

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

Nếu chúng ta gõ URL tiếp sau đây vào trình chuyên chú của bạn, bạn sẽ cảm nhận một list những tài sản BDS tất cả sẵn trên sao Hỏa!

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

Phản hồi từ một web service là những định dạng phổ cập trong JSON, một định hình hội đàm bộc lộ đến tài liệu có cấu trúc. Quý Khách tìm hiểu thêm về JSON trong nhiệm vụ tiếp sau, mà lại được quan tâm, đối tượng người sử dụng JSON là 1 tập phù hợp các cặp khóa-quý hiếm, thỉnh phảng phất được hotline là dictionary, một hashmap, hoặc mảng kết hợp. Một tập thích hợp các đối tượng người sử dụng JSON là một trong những mảng JSON, cùng chúng ta nhận được mảng này dưới dạng một bình luận trường đoản cú website service.

Để nhấn tài liệu này vào trong áp dụng, vận dụng cần thiết lập liên kết mạng và Bàn bạc cùng với hệ thống đó, và kế tiếp dìm và phân tích dữ liệu phản hồi vào trong một định hình nhưng vận dụng hoàn toàn có thể sử dụng. Trong bài này, các bạn áp dụng một thỏng viện REST, được hotline Retrofit nhằm tạo ra 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, cung ứng những dòng dưới đây cho những thư 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 dạng được định nghĩa riêng biệt vào tệp Gradle của dự án. Dependency thứ nhất là mang đến thỏng viện Retrofit 2, cùng dependency trang bị nhị là đến trình thay đổi Retrofit ko xác minh. Trình biến đổi này cho phép Retrofit trả về kết quả JSON nlỗi một chuỗi String. Hai tlỗi viện này làm việc cùng cả nhà.

Nhấn Sync Now nhằm biên dịch lại dự án với những dependency bắt đầu.

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

Retrofit chế tác một API mang lại ứng dụng dựa vào ngôn từ từ bỏ web service. Nó hấp thụ tài liệu từ website service cùng đưa nó qua một thư viện chuyển đổi riêng lẻ, nhưng mà biết phương pháp để phân tích tài liệu với trả về dưới dạng những đối tượng người tiêu dùng hữu ích. Retrofit bao hàm những hỗ trợ được tích thích hợp cho các định hình tài liệu website thịnh hành nlỗi XML với JSON. Retrofit tạo thành đa số các lớp mạng cho chính mình, bao hàm các cụ thể quan trọng như bài toán thực hiện những yên cầu bên trên các luồng dưới background.

Lớp MarsApiService gìn giữ lớp mạng cho áp dụng, chính là, API cơ mà ViewModel vẫn thực hiện nhằm tiếp xúc cùng với web service. Đây là lớp nhưng mà bạn phải tiến hành những API hình thức dịch vụ Retrofit.

See more: 5 Bước Xây Dựng Quy Trình Bán Hàng Của Công Ty Sản Xuất, Sơ Đồ Quy Trình Kinh Doanh Của Công Ty Thương Mại

Mngơi nghỉ tệp app/java/network/MarsApiService.kt. Ngay hiện nay tệp này chỉ đựng một thứ: một hằng mang đến URL đại lý mang lại website service.Ngay sau bên dưới câu hỏi điện thoại tư vấn mang lại builder Retrofit, tư tưởng một đồ họa (interface) để khái niệm biện pháp Retrofit thao tác làm việc với website VPS thực hiện những yên cầu HTTP.. Knhị báo retrofit2.http.GET và retrofit2.call lúc được đòi hỏi.

interface MarsApiService {