当前位置: 首页 > article >正文

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

相关文章:

  • android的DataBinding的使用
  • Office/WPS接入DeepSeek等多个AI工具,开启办公新模式!
  • 4G核心网的演变与创新:从传统到虚拟化的跨越
  • java-初识List
  • AI安全最佳实践:AI应用开发安全评估矩阵(上)
  • 深入解析 FFmpeg 的 AAC 编解码过程
  • 书生大模型实战营2
  • Semaphore 与 线程池 Executor 有什么区别?
  • 嵌入式知识点总结 Linux驱动 (三)-文件系统
  • Linux 35.6 + JetPack v5.1.4之编译器升级
  • 在Rust应用中访问.ini格式的配置文件
  • vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题
  • 第3章 基于三电平空间矢量的中点电位平衡策略
  • 无人机+固定机巢 ,空地协同作业技术详解
  • Hive:Hive Shell技巧
  • 回顾:Maven的环境搭建
  • 第32章 测试驱动开发(TDD)的原理、实践、关联与争议(Python 版)
  • 【设计模式-行为型】迭代器模式
  • 构建自定义 AI 模型服务:集成到 Spring AI 处理特定任务
  • 算法刷题Day28:BM66 最长公共子串
  • AAAI2024论文合集解读|Multi-granularity Causal Structure Learning-water-merged
  • 82,【6】BUUCTF WEB .[CISCN2019 华东南赛区]Double Secret
  • 电脑怎么格式化?格式化详细步骤
  • App UI自动化--Appium学习--第一篇
  • 【机器学习】自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • LabVIEW相位差测量系统