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));
輸出:
原文地址:https://blog.csdn.net/geovindu/article/details/145381184
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/522781.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/522781.html 如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!