Code dự báo thời tiết

     

Nếu nhiều người đang tìm kiếm ý tưởng phát minh cho project của chính mình nhưng cảm xúc mông lung với lạc lối thìbây giờ tôi sẽ hướng dẫn bạn bè cách sử dụng các API có sẵn để sản xuất một ứng dụng dự báo khí hậu với Java

API là viết tắt của chữApplication Programming Interfacedịch nôm mãng cầu ra giờ đồng hồ Việt làgiao diện lập trình vận dụng (interface ở đó là giao diện). API là thủ tục đểkết nối,trao đổi dữ liệunhữngthư việnhayứng dụngvới nhau. API có thể được thực hiện cho hệ thống nhúng, phần cứng, phần mềm hay vừa mới đây nhất là các hệ thống micro service với nhiều thành phần trong hệ thống được bóc biệt riêng biệt với nhau.

Bạn đang xem: Code dự báo thời tiết

Cho bạn bè nào chưa biết về API, các chúng ta có thể đọc qua bài này nhằm hiểu API là gì nhéLink

Các thư viện phải thiết

Để điện thoại tư vấn một API, anh em cần sự cung ứng của đông đảo thư viện HTTP Client - thư viện giúp chương trình nhận với gửi hiệu quả từ những API, tại chỗ này tôi thực hiện thư viện OkHttp.

Link dowload file jar-download.com.Nếu bằng hữu sử dụng maven thì đây làdependency:

com.squareup.okhttp okhttp 2.7.5Nếu anh em chưa biết Maven là gì thì hãy tìm hiểu thêm tại đây:link

Kết trái từ API trả về sẽ là 1 trong chuỗi Json nên chúng ta cần biến đổi chuỗi Json kia thành các Object.

{ "cod": "200", "message": 0, "cnt": 10, "list": < "dt": 1595397600, "main": "temp": 33.53, "feels_like": 35.46, "temp_min": 33.53, "temp_max": 35.14, "pressure": 1008, "sea_level": 1006, "grnd_level": 1005, "humidity": 55, "temp_kf": -1.61 , "weather": < "id": 500, "main": "Rain", "description": "light rain", "icon": "10d" >Để ví dụ giải pháp chuyển Json thành Object, anh em cần dùng tài năng về String của mình, lấy phần đông cặp key-value tự String Json đó......Thôi dẹp đi, nhì nhằng quá. Thay vì chưng mất công xử trí chuỗi, bọn họ có tủ sách Gson thao tác này.Link dowload file .jar

http://www.java2s.com/Code/Jar/g/Downloadgson222jar.htm

Nếu chúng ta dùng Maven thì đây

com.google.code.gson gson 2.8.5

Lấy API cùng phân tích

Trước hêt, đồng đội vào link này để lấy API :https://openweathermap.org/api

Nhớ đăng nhập nhé

Tiếp theo, kéo xuống và click vào chiếc này

*

Thực ra đồng đội lấy cái nào thì cũng được, cơ mà mình vẫn lấy loại 16 ngày làm cho ví dụ.

Khi click vào, bằng hữu sẽ được đọc một trang nhiều năm loằng ngoằng những cách sử dụng API nhưng đại một số loại là theo format này

api.openweathermap.org/data/2.5/forecast?q=city name,state code&cnt=cnt&appid=your api key

Để cho anh em nào cần thiết hoặc chưa chắc chắn cách truy vấn API, bạn bè ấn vào API sau :

http://api.openweathermap.org/data/2.5/forecast?q=Hanoi&APPID=bffca17bcb552b8c8e4f3b82f64cccd2&units=metric

Trong đó:

q là thành phố bạn muốn tìm dự báo thời tiếtAPIID là Id của người tiêu dùng khi đăng kíunits là đơn vị đo sức nóng độmetric là độ C.

Sau lúc click vào, ta thấy như sau :

*

Oke rồi, bắt đầu phân tích nào.

Xem thêm: Cách Làm Bảng Ngọc Tank - Bảng Ngọc Đỡ Đòn Liên Quân Mùa 16

Khoan, có nào đó sai sai thì phải, cả một gò hổ lốn cầm kia thì phân tích làm cho sao? Oke, bạn bè làm theo tôi, sao chép toàn cỗ nội dung trên.Mở NeatBean -> Chuột cần vào Package -> new -> Other -> Other -> Json File.

Paste cái bằng hữu coppy vào.

Tool -> Option -> Editor -> Formating -> Ở mục Category chọn Wraping. Oke

Và đây là thành quả

*

Thư viện Gson cho phép chúng ta lưu những giá trị ở hầu hết từ khóa vào phần đa biến mang tên tương tự trong một class java, tài liệu một class sẽ tiến hành để trong dấu , dữ liệu của một mảng, một collection sẽ để vào <>. Class nào phía bên trong một class không giống thì khai báo instance của class đó như một nằm trong tính của class lớn.

Code nào!

Bước 1 : chế tác Project và địa chỉ cửa hàng thư viện .Jar

Chuột buộc phải vào Libraries vào project chọn Add JAR/Folder...Add thư viện chúng ta vừa cài về (nhớ giải nén nhá).

Cấu trúc project sẽ như vậy này :

*

Bước 2: phụ thuộc vào chuỗi Json nhằm tạo các class trong Packge Data (Nhớ khắc tên property trong class đúng như nhau trong Json nhé, hoặc đồng đội có thể tìm hiểu thêm project của mình).

Bước 3: Code class HandleApi

Thực ra class này chỉ có duy độc nhất 1 hàm đó là hàm gọi API, tham số truyền vào là tên thành phố

public class HandleAPI public static JsonResult getJsonData(String city) OkHttpClient client = new OkHttpClient(); Gson gson = new Gson(); JsonResult data = null; // tạo ra một request cho API Request res = new Request.Builder().url("http://api.openweathermap.org/data/2.5/forecast?q="+city+"&APPID=bffca17bcb552b8c8e4f3b82f64cccd2&units=metric").build(); try // giữ hộ Request cho API và nhận về Response Response response = client.newCall(res).execute(); //Một Response sẽ sở hữu được Header và Body, ở chỗ này mình chỉ lấy body toàn thân ResponseBody toàn thân = response.body(); // thay đổi Body - thực chất là chuỗi Json thành Object data = gson.fromJson(body.string(), JsonResult.class); catch (Exception e) e.printStackTrace(); return data; Bước 4: sinh sản Gui

Anh em thiết kế theo gui này nhé, hoặc có tác dụng khác cũng được

*

Bước 5: xử lý sự kiện

public class PrepareGui { private WeatherApp weather; private JsonResult result; private ArrayList listResult; private int idx = 0; public PrepareGui() weather = new WeatherApp(); prepare(); public WeatherApp getWeather() return weather; private void prepare() weather.getBtn_find().setActionCommand("find"); weather.getBtn_find().addActionListener(new ButtonClick()); weather.getBtn_next().setActionCommand("next"); weather.getBtn_next().addActionListener(new ButtonClick()); weather.getBtn_pre().setActionCommand("pre"); weather.getBtn_pre().addActionListener(new ButtonClick()); private void show() String date = " Ngày: " + result.getList().getDt_txt(); String đô thị = " Thành phố: " + result.getCity().getName(); String nation = " Quốc gia: " + result.getCity().getCountry(); String weath = " Thời tiết: " + result.getList().getWeather()<0>.getDescription(); String nhietDo = " nhiệt độ độ: " + result.getList().getMain().getTemp() + " độ C"; String apXuat = " Ap xuất: " + result.getList().getMain().getPresure(); String doAm = " Độ ẩm: " + result.getList().getMain().getHumidity(); String winSpeed = " tốc độ gió: " + result.getList().getWind().getSpeed(); String clouds = " Mây: " + result.getList().getClouds().getAll() + "%"; weather.getLb_apXuat().setText(apXuat); weather.getLb_city().setText(city); weather.getLb_cloud().setText(clouds); weather.getLb_date().setText(date); weather.getLb_doAm().setText(doAm); weather.getLb_nation().setText(nation); weather.getLb_nhietDo().setText(nhietDo); weather.getLb_weather().setText(weath); weather.getLb_windSpeed().setText(winSpeed); public class ButtonClick implements ActionListener {

Chuyên mục: Tin Tức