首页 > 其他分享 >.net 6.0 获取天气相关

.net 6.0 获取天气相关

时间:2023-05-24 11:12:31浏览次数:45  
标签:jsonObj key 获取 weather https 6.0 net now

之前做网站的时候,有个需求获取实时天气相关信息,找了一些开放免费的接口,过了几周发现大数据推了好多类似的帖子(真怪,需要你的时候你不来,很气,拿小本本记下了)

首先里一下思路,获取天气有哪些种方式。我在查阅资料的过程中,找到了两种相对比较友好的(对应以下两个接口网站)。
经纬度获取 和风天气
优点:位置准确,官方api 文档很细,接口丰富,有商业需求可支持定制,用户每天免费 5000次
缺点:收费
城市编码 中国气象局
优点:免费
缺点:都免费了,要撒自行车,硬要说的话 可能不能精准定位(没仔细研究还有没有其他方式获取天气)

  1. 两者网站接口对比 演示(城市暂定武汉)
    经纬度 30.58N, 114.30E
    https://devapi.qweather.com/v7/weather/now?location=114.30,30.58&key=cd19b9cc50494568b0d791a66e67f1e5
    具体参数参照官方文档 doc
    {
    "code": "200",
    "updateTime": "2023-05-24T10:27+08:00",
    "fxLink": "https://www.qweather.com/weather/jiang'an-101200107.html",
    "now": {
    "obsTime": "2023-05-24T10:12+08:00",
    "temp": "19",
    "feelsLike": "18",
    "icon": "104",
    "text": "阴",
    "wind360": "271",
    "windDir": "西风",
    "windScale": "1",
    "windSpeed": "2",
    "humidity": "80",
    "precip": "0.0",
    "pressure": "1009",
    "vis": "8",
    "cloud": "91",
    "dew": "15"
    },
    "refer": {
    "sources": ["QWeather", "NMC", "ECMWF"],
    "license": ["CC BY-SA 4.0"]
    }
    }
    城市编码 57494
    https://weather.cma.cn/api/now/57494
    {
    "msg": "success",
    "code": 0,
    "data": {
    "location": {
    "id": "57494",
    "name": "武汉",
    "path": "中国, 湖北, 武汉"
    },
    "now": {
    "precipitation": 0.0,
    "temperature": 20.9,
    "pressure": 1009.0,
    "humidity": 71.0,
    "windDirection": "西北风",
    "windDirectionDegree": 274.0,
    "windSpeed": 3.1,
    "windScale": "微风"
    },
    "alarm": [],
    "lastUpdate": "2023/05/24 10:25"
    }
    }

  2. .net 6.0 代码实现
    天气帮助类
    public class WeatherHelper
    {
    ///


    /// 城市编码获取
    ///

    ///
    public static async Task getWeather(string citycode)
    {
    //武汉
    string url = $"https://weather.cma.cn/api/now/{citycode}";
    var res = await $"{url}".GetStringAsync();
    JObject jsonObj = JObject.Parse(res);
    var weather = jsonObj["data"]["now"].ToString();//输出 "深圳"
    return weather;
    }

    ///


    /// 根据经纬度获取
    ///

    ///
    public static async Task getWeather(float lon, float lat,string key)
    {
    //api 帮助文档 https://www.qweather.com/
    string url = $"https://devapi.qweather.com/v7/weather/now?location={lon},{lat}&key={key}";
    var res = $"{url}".GetStringAsync();
    JObject jsonObj = JObject.Parse(res.Result);
    //key 可能会过期,每个用户每天上限5000次
    if (jsonObj["code"].ToString() == "200")
    {
    result = jsonObj;
    break;
    }
    var weather = result["now"].ToString();
    return weather;
    }
    }

标签:jsonObj,key,获取,weather,https,6.0,net,now
From: https://www.cnblogs.com/yibannanxing/p/17427413.html

相关文章

  • .net开发-心情与效率
    随着现代科技的不断发展,笔记本电脑已经成为我们日常生活中不可或缺的一部分。然而,在使用笔记本电脑的过程中,我们可能会遇到一些问题,例如显示器闪烁、HDMI接口接触不良等,这些问题不仅会影响我们的工作效率,还会对我们的心情产生负面影响。首先,显示器闪烁是一种常见的问题,尤其是在光......
  • 09获取权限源码阅读记录
    类关系图属于Volo.Abp解决方案的类:PermissionDefinitionManager属于Volo.Abp.PermissionManagement解决方案的类:PermissionsControllerPermissionAppServicePermissionManagerPermissionManagementProviderEfCorePermissionGrantRepository属于Volo.Abp.Identity解......
  • C#获取对象实体的键值对信息
    ///<summary>///键值对///</summary>publicclassKv{///<summary>///键///</summary>publicstringKey{get;set;}///<summary>///值///</s......
  • 【愚公系列】2023年05月 .NET CORE工具案例-C#调用Python的二种方式
    (文章目录)前言.NET调用Python的作用和意义是可以利用Python强大的数据处理和机器学习能力,结合.NET的优势进行开发,提高开发效率和应用性能。同时,Python也可以通过.NET进行调用,实现跨语言的开发和应用。一、C#调用Python的三种方式1.ironPython调用1.1ironPython的安装IronP......
  • windows平台的dhcp服务软件、dhcp服务器netbootm工具用法介绍
    使用深度远程启动管理器配置管理口IP方法1、将笔记本IP设置为需要配置的IP同网段的一个IP;2、用网线将笔记本网口与服务器管理口连接;3、打开深度远程启动管理器,点击选项配置按钮,选择DHCP选项卡4、配置下图红框中的选项,启始地址为需要配置的IP的第一个地址,子网掩码以及网关与客户要......
  • Net6 请求管道处理
    1newWebHostBuilder,并传入IHostBuilder和ApplicationBuilder并初始化,执行委托创建HttpListenerServer服务,没有则返回默认监听地址,注册中间件,获取监听地址,生成管道对象requestDelegate()生成时执行了注册的中间件。创建并返回WebHostedService(传入监听地......
  • net-core认证和授权
    publicvirtualboolIsAuthenticated{get{return!string.IsNullOrEmpty(_authenticationType);}}登录代码:IList<Claim>calims=newList<Claim>();calims.Add(newClaim("name","ybd"));......
  • Paper Reading: forgeNet a graph deep neural network model using tree-based ensem
    目录研究动机文章贡献本文方法图嵌入深度前馈网络forgeNet特征重要性评估具体实现模拟实验合成数据生成实验评估实验结果真实数据应用BRCA数据集microRNA数据Healthyhumanmetabolomics数据集优点和创新点PaperReading是从个人角度进行的一些总结分享,受到个人关注点的侧重......
  • Golang - 获取指定区间范围内随机数
    1.go语言未提供获取指定区间范围内的随机数方法,只有一个参数获取(0,n)的随机数。2.可根据此方法获取指定区间随机数,先随机0到(m-n),再用加 n的方式解决例:[5,10],先生成[0,5],再加5packagemainimport("fmt""math/rand""time")funcmain(){//......
  • Kubernetes(k8s)最大启动时长研究
    一、前言应用部署在Kubernetes(k8s)上,有些应用启动慢一些,没启动好就又被k8s重启了二、处理过程1.看日志[2023-05-2314:38:52.249]|-INFO|-[background-preinit]|-o.h.v.i.u.Version[0]|-[TID:N/A]|-HV000001:HibernateValidator6.1.7.Final[2023-05-2314:40:11.817]|-......