Java: read weather info from openweathermap.org
/**
* encoding: utf-8
* 版权所有 2023 ©涂聚文有限公司
* 许可信息查看:
* 描述:
* # Author : geovindu,Geovin Du 涂聚文.
* # IDE : IntelliJ IDEA 2023.1 Java 17
* # Datetime : 2023 - 2023/12/15 - 14:09
* # User : geovindu
* # Product : IntelliJ IDEA
* # Project : EssentialAlgorithms
* # File : Weather.java
* # explain : 学习 类
**/
package Model;
/**
* 天气情况
*/
public class Weather{
public int id;
public String main;
/**
* 天气
*/
public String description;
/**
* icon id 天气图标
*/
public String icon;
}
/**
* encoding: utf-8
* 版权所有 2023 ©涂聚文有限公司
* 许可信息查看:
* 描述:
* # Author : geovindu,Geovin Du 涂聚文.
* # IDE : IntelliJ IDEA 2023.1 Java 17
* # Datetime : 2023 - 2023/12/15 - 14:08
* # User : geovindu
* # Product : IntelliJ IDEA
* # Project : EssentialAlgorithms
* # File : Root.java
* # explain : 学习 类
**/
package Model;
import java.util.*;
import java.util.Arrays;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.annotation.JsonProperty;
/**
* 天气主体实体类
*/
public class WeatherInfo{
/**
* 地球经纬度类
*/
public Coord coord;
/**
*
*/
public ArrayList<Weather> weather;
public String base;
public Main main;
public int visibility;
/**
* 风
*/
public Wind wind;
public Clouds clouds;
public int dt;
public Sys sys;
public int timezone;
public int id;
public String name;
public int cod;
}
/**
* encoding: utf-8
* 版权所有 2023 ©涂聚文有限公司
* 许可信息查看:
* 描述:
* # Author : geovindu,Geovin Du 涂聚文.
* # IDE : IntelliJ IDEA 2023.1 Java 17
* # Datetime : 2023 - 2023/12/15 - 15:36
* # User : geovindu
* # Product : IntelliJ IDEA
* # Project : EssentialAlgorithms
* # File : openWeatherMap.java
* # explain : 学习 类
**/
package BLL;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
import java.io.BufferedReader;
import com.fasterxml.jackson.databind.ObjectMapper; //jackson-annotations-2.16.0
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.http.*;
import java.net.*;
import java.net.HttpURLConnection;
import java.net.URL;
import Model.WeatherInfo;
public class openWeatherMap {
private static String key="geovindu";
/**
* 天气实体
* @param city 城市ID
* @param lng 语言类型
* @return
*/
public WeatherInfo getObject(String city,String lng)
{
try {
//String city="1795565";
//String key="576316985a97678b603b2a15a8f16285";
//String lng="zh_cn";
URL url = new URL(String.format("http://api.openweathermap.org/data/2.5/weather?id=%s&appid=%s&lang=%s",city,key,lng)); //${lastname}
HttpURLConnection response = (HttpURLConnection) url.openConnection();
response.setRequestMethod("GET");
response.setRequestProperty("User-Agent","Mozilla/5.0");
response.setRequestProperty("Content-Type", "application/json");
response.setRequestProperty("Accept", "application/json");
response.setDoOutput(true);
try(BufferedReader br = new BufferedReader(
new InputStreamReader(response.getInputStream(), "utf-8"))) {
StringBuilder strdata = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
strdata.append(responseLine.trim());
}
String myJsonString=strdata.toString();
//System.out.println(myJsonString);
ObjectMapper om = new ObjectMapper();
WeatherInfo root = om.readValue(myJsonString, WeatherInfo.class);
return root;
}
}
catch(Exception e)
{
System.out.println(e);
return null;
}
}
/**
* 天气实体
* @param city 城市ID
* @return
*/
public WeatherInfo getObject(String city)
{
try {
//String city="1795565";
String lng="zh_cn";
URL url = new URL(String.format("http://api.openweathermap.org/data/2.5/weather?id=%s&appid=%s&lang=%s",city,key,lng)); //${lastname}
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent","Mozilla/5.0");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");
con.setDoOutput(true);
try(BufferedReader br = new BufferedReader(
new InputStreamReader(con.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
String myJsonString=response.toString();
//System.out.println(myJsonString);
ObjectMapper om = new ObjectMapper();
WeatherInfo root = om.readValue(myJsonString, WeatherInfo.class);
//System.out.println("天气:"+root.weather.get(0).description);
//System.out.println("温度:"+root.main.temp);
return root;
}
}
catch(Exception e)
{
System.out.println(e);
return null;
}
}
}
調用:
BLL.openWeatherMap weatherMap=new openWeatherMap();
WeatherInfo geovindu=weatherMap.getObject("1795565");
System.out.println("城市:"+ geovindu.name);
System.out.println("湿度:"+geovindu.main.humidity + '%');
System.out.println("天气:"+geovindu.weather.get(0).description);
System.out.println("日出:"+TimeHelper.gettime(geovindu.sys.sunrise));
System.out.println("日落:"+TimeHelper.gettime(geovindu.sys.sunset));
System.out.println("温度:"+TimeHelper.getKTC(geovindu.main.temp));
System.out.println("最低温度:"+TimeHelper.getKTC(geovindu.main.temp_min));
System.out.println("最高温度:"+TimeHelper.getKTC(geovindu.main.temp_max));
輸出:

哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号