使用Springboot實現(xiàn)獲取某個城市當(dāng)天的天氣預(yù)報
獲取天氣信息作者是通過高德開放平臺來實現(xiàn)的。
1、在該平臺注冊個賬號
如已經(jīng)注冊,直接登錄即可。
2、創(chuàng)建應(yīng)用
創(chuàng)建成功后獲取到key值。(注意該值會經(jīng)常用到,且可以共用保存好)
3、進入開發(fā)文檔選擇天氣查詢
下面按照說明使用即可。
接下來上代碼。(注意功能接受的是JSON格式的)
4、pom.xml文件的引用
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.80</version> </dependency>
5、配置文件
無
6、實體類
package com.zjh.weixin.Model; import lombok.Data; import java.util.List; /** * @Author: zjh * @Date: 2022/9/19 11:03 * @Description: 天氣總實體 * @Version: v1.0 */ @Data public class WeatherModel { private String status; private String count; private String nfo; private String infocode; private List<LivesModel> lives; }
該實體為總實體(后續(xù)添加功能時,在總實體添加引用,在創(chuàng)建子實體)
package com.zjh.weixin.Model; import lombok.Data; /** * @Author zjh * @Date 2022/9/19 1053 * @Description 天氣實體類 * @Version v1.0 */ @Data public class LivesModel { private String province; private String city; private String adcode; private String weather ; private String temperature ; private String winddirection; private String windpower; private String humidity; private String reporttime ; }
該類為子實體
7、根據(jù)路徑獲取信息
package com.zjh.weixin.Util; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.client.RestTemplate; import com.alibaba.fastjson.JSON; import java.util.Map; /** * @Author: zjh * @Date: 2022/9/19 10:29 * @Description: 后端根據(jù)路徑發(fā)起請求 * @Version: v1.0 */ public class HttpsUtil { /** * get請求 */ public static String get(String url){ HttpHeaders headers = new HttpHeaders(); MediaType mediaType = MediaType.parseMediaType("application/json; charset=UTF-8"); headers.setContentType(mediaType); RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(url, String.class); return result; } }
8、調(diào)用方法
public static void main(String[] args) { String url = "https://restapi.amap.com/v3/weather/weatherInfo?city=411400&key=b2f301************077d21"; String s = HttpsUtil.get(url); System.out.println(s); JSONObject object = JSONObject.parseObject(s); WeatherModel jb = (WeatherModel)JSONObject.toJavaObject(object, WeatherModel.class); System.out.println(jb); LivesModel livesModel = jb.getLives().get(0); System.out.println(livesModel); int c =Integer.valueOf(livesModel.getTemperature()); SimpleDateFormat dateFm = new SimpleDateFormat("EEEE"); String currSun = dateFm.format(new Date()); String r = null; if (c<=26 && c>=18){ r="今天溫度適宜"; }else if (c>26){ r="今天溫度較高,注意防曬"; }else if(c<18){ r="今天溫度較低,注意保暖"; } String zong = "日期: "+livesModel.getReporttime()+" "+currSun+"\n"+ "所在城市: "+livesModel.getCity()+"\n"+ "天氣: " + livesModel.getWeather()+"\n"+ "溫度: "+ livesModel.getTemperature()+" "+r+"\n"+ "風(fēng)向: "+ livesModel.getWinddirection()+"風(fēng)"+"\n"+ "風(fēng)級: "+livesModel.getWindpower(); System.out.println(zong); }
成功返回數(shù)據(jù)
9、項目優(yōu)化
public static String getWeather(String adcode,String key){ String url = "https://restapi.amap.com/v3/weather/weatherInfo?city="+adcode+"&key="+key; String s = HttpsUtil.get(url); JSONObject object = JSONObject.parseObject(s); WeatherModel jb = (WeatherModel)JSONObject.toJavaObject(object, WeatherModel.class); LivesModel livesModel = jb.getLives().get(0); int c =Integer.valueOf(livesModel.getTemperature()); SimpleDateFormat dateFm = new SimpleDateFormat("EEEE"); String currSun = dateFm.format(new Date()); String r = null; if (c<=26 && c>=18){ r="今天溫度適宜"; }else if (c>26){ r="今天溫度較高,注意防曬"; }else if(c<18){ r="今天溫度較低,注意保暖"; } String zong = "日期: "+livesModel.getReporttime()+" "+currSun+"\n"+ "所在城市: "+livesModel.getCity()+"\n"+ "天氣: " + livesModel.getWeather()+"\n"+ "溫度: "+ livesModel.getTemperature()+" "+r+"\n"+ "風(fēng)向: "+ livesModel.getWinddirection()+"風(fēng)"+"\n"+ "風(fēng)級: "+livesModel.getWindpower(); return zong; } private static String getCityCode(String adress,String key){ String url = "https://restapi.amap.com/v3/geocode/geo?address="+adress+"&key="+key; String s = HttpsUtil.get(url); JSONObject object = JSONObject.parseObject(s); System.out.println(object); JSONArray array = (JSONArray) object.get("geocodes"); JSONObject arrayObject = (JSONObject) array.get(0); String adcode = arrayObject.get("adcode").toString(); return adcode; } public static void main(String[] args) { System.out.println(getCityCode("河南省鄭州市","b2f301c36******77d21")); System.out.println(getWeather(getCityCode("河南省鄭州市","b2f3*****7d21"),"b2f3*******7d21")); }
注:該功能雖說是springboot項目,但是缺失許多東西,不太完善(其主要原因是因為作者發(fā)現(xiàn)通過java編程實現(xiàn)通過用戶賬號發(fā)送給該用戶的好友信息,只能通過Robot的自動測試功能實現(xiàn)微信發(fā)送消息。該方法缺點太大,不太方便,暫時未找到其他更好的方法
以上就是使用Springboot實現(xiàn)獲取某個城市當(dāng)天的天氣預(yù)報的詳細(xì)內(nèi)容,更多關(guān)于Springboot獲取天氣預(yù)報的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用.NET Core3.0創(chuàng)建一個Windows服務(wù)的方法
這篇文章主要介紹了使用.NET Core3.0創(chuàng)建一個Windows服務(wù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04Java結(jié)合Vue項目打包并進行服務(wù)器部署
本文主要介紹了Java結(jié)合Vue項目打包并進行服務(wù)器部署,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Spring配置多個數(shù)據(jù)源并實現(xiàn)數(shù)據(jù)源的動態(tài)切換功能
這篇文章主要介紹了Spring配置多個數(shù)據(jù)源并實現(xiàn)數(shù)據(jù)源的動態(tài)切換功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01java中不同版本JSONObject區(qū)別小結(jié)
本文主要介紹了java中不同版本JSONObject區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02Java instanceof關(guān)鍵字的的進一步理解
這篇文章主要介紹了Java instanceof關(guān)鍵字的的進一步理解,本文用一些實例講解了instanceof操作符的一些知識,需要的朋友可以參考下2015-03-03