使用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ù)報的詳細內(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-04
Java結(jié)合Vue項目打包并進行服務(wù)器部署
本文主要介紹了Java結(jié)合Vue項目打包并進行服務(wù)器部署,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Spring配置多個數(shù)據(jù)源并實現(xiàn)數(shù)據(jù)源的動態(tài)切換功能
這篇文章主要介紹了Spring配置多個數(shù)據(jù)源并實現(xiàn)數(shù)據(jù)源的動態(tài)切換功能,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
java中不同版本JSONObject區(qū)別小結(jié)
本文主要介紹了java中不同版本JSONObject區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Java instanceof關(guān)鍵字的的進一步理解
這篇文章主要介紹了Java instanceof關(guān)鍵字的的進一步理解,本文用一些實例講解了instanceof操作符的一些知識,需要的朋友可以參考下2015-03-03

