123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- 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 YiKeYunApiUtils {
- private static final String API_YIKEYUN_APPID = "97543277";
- private static final String API_YIKEYUN_APPSECRET = "PXd7GE2j";
- /**
- * 根据城市adcode获取天气信息, 易客云 api
- * api doc <a href="http://tianqiapi.com/index/doc?version=day"></a>
- * @param adcode
- * @return
- */
- public static Map<String, String> getTodayWeatherByAdcode(String adcode) {
- String getUrl = String.format("http://v1.yiketianqi.com/free/day?appid=%s&appsecret=%s&unescape=1&adcode=%s", API_YIKEYUN_APPID, API_YIKEYUN_APPSECRET, adcode);
- Map<String, String> map = new HashMap<>();
- 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);
- JSONObject jsonData = JSONObject.parseObject(sb.toString());
- map.put("temp", jsonData.get("tem").toString());
- map.put("weather", jsonData.get("wea").toString());
- map.put("high", jsonData.get("tem_day").toString());
- map.put("low", jsonData.get("tem_night").toString());
- map.put("windLevel", jsonData.get("win_speed").toString());
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- return map;
- }
- /**
- * 根据城市id获取天气信息, 易客云 api
- * @param cityId
- * @return
- */
- public static Map<String, String> getTodayWeatherByCityId(String cityId) {
- String getUrl = String.format("http://v1.yiketianqi.com/free/day?appid=%s&appsecret=%s&unescape=1&cityid=%s", API_YIKEYUN_APPID, API_YIKEYUN_APPSECRET, cityId);
- Map<String, String> map = new HashMap<>();
- 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);
- JSONObject jsonData = JSONObject.parseObject(sb.toString());
- map.put("temp", jsonData.get("tem").toString());
- map.put("weather", jsonData.get("wea").toString());
- map.put("high", jsonData.get("tem_day").toString());
- map.put("low", jsonData.get("tem_night").toString());
- map.put("windLevel", jsonData.get("win_speed").toString());
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- return map;
- }
- /**
- * 根据城市id获取天气信息, 易客云 api
- * @param cityId
- * @return
- */
- public static Map<String, Map<String, String>> getHistoryWeather(String cityId, Integer year, Integer month) {
- String getUrl = String.format("http://gfeljm.tianqiapi.com/free/history?appid=%s&appsecret=%s&cityid=%s&year=%d&month=%d", API_YIKEYUN_APPID, API_YIKEYUN_APPSECRET, cityId, year, month);
- Map<String, Map<String, String>> map = new HashMap<>();
- 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);
- JSONObject jsonData = JSONObject.parseObject(sb.toString());
- JSONArray list = jsonData.getJSONArray("list");
- list.forEach(item -> {
- Map<String, String> data = new HashMap<>();
- JSONObject itemObj = (JSONObject) item;
- data.put("weather", itemObj.getString("wea_day"));
- data.put("low", itemObj.getString("tem_night"));
- data.put("high", itemObj.getString("tem_day"));
- data.put("windLevel", itemObj.getString("win_speed"));
- String date = itemObj.getString("date");
- // 将 yyyy-MM-dd 转化为 yyyy年MM月dd日
- String dateFormat = date.replace("-", "年");
- dateFormat = dateFormat.replace("-", "月") + "日";
- map.put(dateFormat, data);
- });
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- return map;
- }
- }
|