Lấy dữ liệu từ API trong Android

Web Apis thật sự hữu ích cho những ai muốn tạo ra các ứng dụng sử dụng nguồn tài nguyên trên mạng như google map, từ điển bách khoa wikipetia, tin tức thời sự, thời tiết,… Bạn có thể tạo ra ứng dụng đọc báo chẳng hạn. Vậy web api là gì?

Web APIs là gì?

APIs là các giao diện (dịch vụ) mà một hệ thống máy tính hay một ứng dụng cung cấp để ứng dụng khác có thể trao đổi với nó.

Lấy dữ liệu từ API trong Android

Web APIs là các API được ứng dụng web cung cấp.

Lấy dữ liệu từ API trong Android

Web APIs cũng giống như hàm. Nó có tên hàm, tham số, loại trả về.

Ví dụ:

hàm bình thường: Money getMoney(int count)

một Web API: http://api.openweathermap.org/data/2.5/weather?q= <city>, <country>

Định dạng trao đổi dữ liệu JSON

Kiểu dữ liệu của city và country là string. Sau gởi chuổi API đến server, kết quả trả về là một file .json hoặc .xml. Ta sẽ xử lý kết quả trên với JSON mà không là XML. Một vài lý do đơn giản là nhanh hơn, đơn giản hơn và trong trường hợp này, file .json là đủ, không cần phức tạp như xml.

Lấy dữ liệu từ API trong Android

Nói lí thuyết thì chưa đủ. Để thấy 1 một file .json, hãy coppy link này vào trình duyệt và enter thử nhé ;). http://api.openweathermap.org/data/2.5/weather?q=Ho+Chi+Minh,vn

Tip: Thử thay thế “Ho+Chi+Minh” thành “Ha+Noi” thử. Bạn sẽ thấy thú vị với kết quả trả về.

Nếu chưa biết gì về json, mình sẽ nói qua về loại file này. Một file json chứa một hoặc nhiều đối tượng json. Một đối tượng json cũng có thể chứa nhiều đối tượng json khác.

Ví dụ:

Lấy dữ liệu từ API trong Android

Sử dụng Web API :http://api.openweathermap.org/data/2.5/weather?q= <city>, <country>

Chúng ta tạo ra ứng dụng hiển thị thông tin thời tiết hiện tại của một thành phố nào đó trên thế giới.

Lấy dữ liệu từ API trong Android

Cấu trúc chương trình gồm 3 class chính:

  • Class Data là lớp chứa các thuộc tính của đối tượng dữ liệu sẽ hiện lên giao diện người dùng. Bao gồm tên thành phố, nhiệt độ, độ gió.
  • Class GetData: lớp xử lý các input của chương trình.
    • Input: tên thành phố, tên đất nước.
    • Output: nhiệt độ, độ gió.
  • Class MainActivity: lấy dữ liệu người dùng nhập vào, gọi hàm getData() để xử lý cho ra một đối tượng Data. Hiện các thuộc tính của đối tượng này lên màn hình.
  • Một chú ý quan trọng: các lệnh truy cập mạng phải được thực hiện trên một thread khác thread main. Vì vậy trong file MainActivity.java, tạo thêm class MyTask kế thừa từ lớp Task để thực hiện đều này.

DEMO

Link tải Demo: Demo_WebAPI_Android

Chắc chắn sẽ còn một số lỗi do thư viện hay IDE hoặc do tên file, code android mà, các bạn cố gắng mày mò nhé!

Mong cung cấp được nột dung bạn mong muốn! Rất cảm ơn nếu bạn  để lại lời bình luận nếu thắc mắc hoặc nhận xét bài viết.

p/s: nội dung khồng riêng mình viết ra, mình cảm ơn nhóm cùng học môn Nhập môn phần mềm và hệ thống nhúng. Cảm ơn bạn Luận đã  tìm hiểu để lấy chủ đề  và tạo demo.