BaiduApiUtil.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package org.springblade.common.utils;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import lombok.extern.slf4j.Slf4j;
  5. import java.io.BufferedReader;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.io.UnsupportedEncodingException;
  9. import java.net.URL;
  10. import java.nio.charset.StandardCharsets;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. @Slf4j
  14. public class BaiduApiUtil {
  15. //百度服务端AK
  16. private static final String API_AK = "S2KnLxdhNEgwWNTdFdR7CwMkdRqNIHib";
  17. /**
  18. * 根据区域代码获取当天天气
  19. * @param districtId 区域代码
  20. */
  21. public static Map<String, String> getTodayWeather(String districtId){
  22. Map<String, String> map = new HashMap<>();
  23. String getUrl = "http://api.map.baidu.com/weather/v1/?data_type=all&district_id=" + districtId + "&ak=" + API_AK;
  24. try{
  25. URL url = new URL(getUrl);
  26. BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
  27. String res;
  28. StringBuilder sb = new StringBuilder();
  29. while ((res = in.readLine()) != null) {
  30. sb.append(res.trim());
  31. }
  32. log.info("获取当天天气 ======= sb.toString():" + sb.toString());
  33. JSONObject jsonData = JSONObject.parseObject(sb.toString());
  34. JSONObject result = (JSONObject) jsonData.get("result");
  35. JSONObject now = (JSONObject) result.get("now");
  36. JSONArray forecasts = (JSONArray) result.get("forecasts");
  37. JSONObject forecast = (JSONObject)forecasts.get(0);
  38. map.put("temp", now.get("temp").toString());
  39. map.put("weather", forecast.get("text_day").toString());
  40. map.put("high", forecast.get("high").toString());
  41. map.put("low", forecast.get("low").toString());
  42. map.put("windLevel",now.get("wind_class").toString());
  43. }catch (IOException e){
  44. e.printStackTrace();
  45. return null;
  46. }
  47. return map;
  48. }
  49. /**
  50. * 根据项目位置获取经纬度
  51. */
  52. public static Map<String, Object> geocoding(String address)
  53. throws IOException {
  54. Map<String, Object> map = new HashMap<>();
  55. BufferedReader in = null;
  56. String getUrl = "http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + API_AK;
  57. URL url = new URL(getUrl);
  58. in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
  59. String res;
  60. StringBuilder sb = new StringBuilder("");
  61. while ((res = in.readLine()) != null) {
  62. sb.append(res.trim());
  63. }
  64. JSONObject jsonData = JSONObject.parseObject(sb.toString());
  65. JSONObject result = (JSONObject) jsonData.get("result");
  66. JSONObject location = (JSONObject) result.get("location");
  67. map.put("lat", location.get("lat").toString());
  68. map.put("lng", location.get("lng").toString());
  69. return map;
  70. }
  71. /**
  72. * 根据经纬度坐标解析地址详情
  73. */
  74. public static Map<String, String> getPosition(String LatitudeAndLongitude)
  75. throws IOException {
  76. Map<String, String> map = new HashMap<>();
  77. String getUrl = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=" + API_AK + "&output=json&coordtype=wgs84ll&location=" + LatitudeAndLongitude;
  78. URL url = new URL(getUrl);
  79. BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), StandardCharsets.UTF_8));
  80. String res;
  81. StringBuilder sb = new StringBuilder("");
  82. while ((res = in.readLine()) != null) {
  83. sb.append(res.trim());
  84. }
  85. JSONObject jsonData = JSONObject.parseObject(sb.toString());
  86. JSONObject result = (JSONObject) jsonData.get("result");
  87. JSONObject addressComponent = (JSONObject) result.get("addressComponent");
  88. map.put("province", addressComponent.get("province").toString());
  89. map.put("city", addressComponent.get("city").toString());
  90. map.put("district", addressComponent.get("district").toString());
  91. map.put("adcode", addressComponent.get("adcode").toString());
  92. return map;
  93. }
  94. }