Quellcode durchsuchen

百度天气工具类

huangjn vor 3 Jahren
Ursprung
Commit
04aabf6383

+ 54 - 0
blade-common/src/main/java/org/springblade/common/utils/BaiduApiUtil.java

@@ -0,0 +1,54 @@
+package org.springblade.common.utils;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+public class BaiduApiUtil {
+
+    //百度服务端AK
+    private static final String API_AK = "S2KnLxdhNEgwWNTdFdR7CwMkdRqNIHib";
+
+    /**
+     * 根据区域代码获取当天天气
+     * @param districtId 区域代码
+     */
+    public static Map<String, String> getTodayWeather(String districtId){
+        Map<String, String> map = new HashMap<>();
+        String getUrl = "http://api.map.baidu.com/weather/v1/?data_type=all&district_id=" + districtId + "&ak=" + API_AK;
+        try{
+            URL url = new URL(getUrl);
+            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
+            String res;
+            StringBuilder sb = new StringBuilder();
+            while ((res = in.readLine()) != null) {
+                sb.append(res.trim());
+            }
+            log.info("获取当天天气 ======= sb.toString():" + sb.toString());
+            JSONObject jsonData = JSONObject.parseObject(sb.toString());
+            JSONObject result = (JSONObject) jsonData.get("result");
+            JSONObject now = (JSONObject) result.get("now");
+            JSONArray forecasts = (JSONArray) result.get("forecasts");
+            JSONObject forecast = (JSONObject)forecasts.get(0);
+            map.put("temp", now.get("temp").toString());
+            map.put("weather", forecast.get("text_day").toString());
+            map.put("high", forecast.get("high").toString());
+            map.put("low", forecast.get("low").toString());
+            map.put("windLevel",now.get("wind_class").toString());
+        }catch (IOException e){
+            e.printStackTrace();
+            return null;
+        }
+        return map;
+    }
+
+}