.NET7使用HttpClient实现查询天气预报接口

这篇具有很好参考价值的文章主要介绍了.NET7使用HttpClient实现查询天气预报接口。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

朋友做网站需要根据城市展示天气预报,找了一圈没有找到靠谱的接口,今天在中央气象台的官网查询某个城市找到了接口,先用postman试了一下居然可以使用,可以查询某个城市7天的天气预报等信息。但是查询编码是气象台自己的编码,在网上搜索了一下居然有这个编码。本文使用HttpClient方法查询这个接口。

天气接口

城市编码

HttpClient是.net core平台最常用的http请求工具,它直接基于Socket开发,提供了异步友好的代码编写方式,它在System.Net.Http命名空间下。

一、新建环境

首先新建一个.NET7 Asp.net core web Api程序。如下选项。

二、在控制器中新建GetWeather

我们这里用get方法请求,通过传入城市名查询天气预报,城市的名称和编码放到Dictionary,单独使用一个方法查询。代码如下:

 [HttpGet(Name = "GetWeather")]
 public async Task<IActionResult> GetWeather(string cityName)
 {
     //编码查询单独使用了一个方法
     int citycode = publicfun.GetKeys(cityName);
     using var client = new HttpClient();
     //请求的基础地址,一般是域名
     client.BaseAddress = new Uri("http://www.nmc.cn");
     //在请求标头中,我们指定User-Agent
     client.DefaultRequestHeaders.Add("User-Agent", "CJAVAPY BOT"); 
     client.DefaultRequestHeaders.Accept.Add(
           //设置accept标头,告诉JSON是可接受的响应类型
             new MediaTypeWithQualityHeaderValue("application/json"));
    //实际请求地址
     var url =$"rest/weather?stationid={citycode}&_=1672315767048";
     HttpResponseMessage response = await client.GetAsync(url);//get请求
     response.EnsureSuccessStatusCode();
     var result= await response.Content.ReadAsStringAsync();//获取结果
     return JsonResult(result) ;//返回json
 }

全国各个城市编码字典方法如下

 public static class publicfun
    {
        public static int GetKeys(string key)
        {
            Dictionary<string, int> dic = new Dictionary<string, int>();
            dic.Add("澳门", 45011);
            dic.Add("大兴安岭", 50442);
            dic.Add("黑河", 50468);
            dic.Add("齐齐哈尔", 50745);
            dic.Add("伊春", 50774);
            dic.Add("鹤岗", 50775);
            dic.Add("绥化", 50853);
            dic.Add("佳木斯", 50873);
            dic.Add("双鸭山", 50884);
            dic.Add("白城", 50936);
            dic.Add("哈尔滨", 50953);
            dic.Add("七台河", 50973);
            dic.Add("鸡西", 50978);
            dic.Add("阿勒泰", 51076);
            dic.Add("塔城", 51133);
            dic.Add("博州", 51238);
            dic.Add("克拉玛依", 51243);
            dic.Add("石河子", 51356);
            dic.Add("昌吉", 51368);
            dic.Add("伊宁", 51431);
            dic.Add("乌鲁木齐", 51463);
            dic.Add("吐鲁番", 51573);
            dic.Add("阿克苏", 51628);
            dic.Add("巴州", 51656);
            dic.Add("克州", 51704);
            dic.Add("喀什", 51709);
            dic.Add("和田", 51828);
            dic.Add("哈密", 52203);
            dic.Add("酒泉", 52533);
            dic.Add("张掖", 52652);
            dic.Add("金昌", 52675);
            dic.Add("武威", 52679);
            dic.Add("西宁", 52866);
            dic.Add("平安县", 52875);
            dic.Add("兰州", 52889);
            dic.Add("白银", 52896);
            dic.Add("同仁县", 52974);
            dic.Add("临夏", 52984);
            dic.Add("定西", 52995);
            dic.Add("包头", 53446);
            dic.Add("呼和浩特", 53463);
            dic.Add("大同", 53487);
            dic.Add("乌海", 53512);
            dic.Add("石嘴山", 53518);
            dic.Add("朔州", 53578);
            dic.Add("吴忠", 53612);
            dic.Add("银川", 53614);
            dic.Add("榆林", 53646);
            dic.Add("忻州", 53674);
            dic.Add("石家庄", 53698);
            dic.Add("太原", 53772);
            dic.Add("阳泉", 53782);
            dic.Add("邢台", 53798);
            dic.Add("固原", 53817);
            dic.Add("延安", 53845);
            dic.Add("临汾", 53868);
            dic.Add("长治", 53882);
            dic.Add("邯郸", 53892);
            dic.Add("安阳", 53898);
            dic.Add("平凉", 53915);
            dic.Add("铜川", 53947);
            dic.Add("运城", 53959);
            dic.Add("晋城", 53976);
            dic.Add("济源", 53978);
            dic.Add("焦作", 53982);
            dic.Add("新乡", 53986);
            dic.Add("鹤壁", 53990);
            dic.Add("牡丹江", 54094);
            dic.Add("通辽", 54135);
            dic.Add("四平", 54157);
            dic.Add("长春", 54161);
            dic.Add("吉林", 54172);
            dic.Add("赤峰", 54218);
            dic.Add("阜新", 54237);
            dic.Add("铁岭", 54249);
            dic.Add("辽源", 54260);
            dic.Add("锦州", 54337);
            dic.Add("盘锦", 54338);
            dic.Add("鞍山", 54339);
            dic.Add("沈阳", 54342);
            dic.Add("本溪", 54346);
            dic.Add("辽阳", 54347);
            dic.Add("通化", 54363);
            dic.Add("白山", 54371);
            dic.Add("张家口", 54401);
            dic.Add("承德", 54423);
            dic.Add("秦皇岛", 54449);
            dic.Add("葫芦岛", 54453);
            dic.Add("营口", 54471);
            dic.Add("丹东", 54497);
            dic.Add("北京", 54511);
            dic.Add("廊坊", 54515);
            dic.Add("天津", 54527);
            dic.Add("唐山", 54534);
            dic.Add("保定", 54602);
            dic.Add("沧州", 54616);
            dic.Add("大连", 54662);
            dic.Add("衡水", 54702);
            dic.Add("德州", 54714);
            dic.Add("滨州", 54734);
            dic.Add("东营", 54736);
            dic.Add("烟台", 54765);
            dic.Add("威海", 54774);
            dic.Add("聊城", 54806);
            dic.Add("济南", 54823);
            dic.Add("泰安", 54827);
            dic.Add("莱芜", 54828);
            dic.Add("淄博", 54830);
            dic.Add("潍坊", 54843);
            dic.Add("青岛", 54857);
            dic.Add("濮阳", 54900);
            dic.Add("菏泽", 54906);
            dic.Add("济宁", 54915);
            dic.Add("临沂", 54938);
            dic.Add("日照", 54945);
            dic.Add("噶尔县", 55437);
            dic.Add("日喀则", 55578);
            dic.Add("拉萨", 55591);
            dic.Add("合作", 56080);
            dic.Add("昌都县", 56137);
            dic.Add("绵阳", 56196);
            dic.Add("德阳", 56198);
            dic.Add("雅安", 56287);
            dic.Add("成都", 56294);
            dic.Add("资阳", 56298);
            dic.Add("林芝县", 56312);
            dic.Add("乐山", 56386);
            dic.Add("眉山", 56391);
            dic.Add("自贡", 56396);
            dic.Add("宜宾", 56492);
            dic.Add("昭通", 56586);
            dic.Add("丽江", 56651);
            dic.Add("攀枝花", 56666);
            dic.Add("六盘水", 56693);
            dic.Add("保山", 56748);
            dic.Add("大理", 56751);
            dic.Add("楚雄", 56768);
            dic.Add("昆明", 56778);
            dic.Add("曲靖", 56783);
            dic.Add("玉溪", 56875);
            dic.Add("临沧县", 56951);
            dic.Add("思茅", 56964);
            dic.Add("文山县", 56994);
            dic.Add("天水", 57006);
            dic.Add("宝鸡", 57016);
            dic.Add("西安", 57036);
            dic.Add("渭南", 57045);
            dic.Add("咸阳", 57048);
            dic.Add("三门峡", 57051);
            dic.Add("洛阳", 57073);
            dic.Add("郑州", 57083);
            dic.Add("许昌", 57089);
            dic.Add("开封", 57091);
            dic.Add("南阳", 57178);
            dic.Add("漯河", 57186);
            dic.Add("周口", 57195);
            dic.Add("广元", 57206);
            dic.Add("安康", 57245);
            dic.Add("襄樊", 57278);
            dic.Add("驻马店", 57290);
            dic.Add("信阳", 57297);
            dic.Add("巴中", 57313);
            dic.Add("达州", 57328);
            dic.Add("荆门", 57377);
            dic.Add("随州", 57381);
            dic.Add("遂宁", 57405);
            dic.Add("南充", 57411);
            dic.Add("广安", 57415);
            dic.Add("恩施", 57447);
            dic.Add("宜昌", 57461);
            dic.Add("荆州", 57476);
            dic.Add("孝感", 57482);
            dic.Add("武汉", 57494);
            dic.Add("鄂州", 57496);
            dic.Add("黄冈", 57498);
            dic.Add("重庆", 57516);
            dic.Add("大庸", 57558);
            dic.Add("岳阳", 57584);
            dic.Add("咸宁", 57590);
            dic.Add("常德", 57662);
            dic.Add("益阳", 57674);
            dic.Add("长沙", 57687);
            dic.Add("毕节", 57707);
            dic.Add("遵义", 57713);
            dic.Add("铜仁", 57741);
            dic.Add("怀化", 57749);
            dic.Add("娄底", 57763);
            dic.Add("邵阳", 57766);
            dic.Add("湘潭", 57773);
            dic.Add("株洲", 57780);
            dic.Add("萍乡", 57786);
            dic.Add("宜春", 57793);
            dic.Add("新余", 57796);
            dic.Add("安顺", 57806);
            dic.Add("贵阳", 57816);
            dic.Add("凯里", 57825);
            dic.Add("都匀", 57827);
            dic.Add("衡阳", 57872);
            dic.Add("桂林", 57957);
            dic.Add("郴州", 57972);
            dic.Add("赣州", 57993);
            dic.Add("商丘", 58005);
            dic.Add("枣庄", 58024);
            dic.Add("徐州", 58027);
            dic.Add("连云港", 58044);
            dic.Add("亳州", 58102);
            dic.Add("淮北", 58116);
            dic.Add("宿州", 58122);
            dic.Add("宿迁", 58131);
            dic.Add("淮安", 58145);
            dic.Add("盐城", 58151);
            dic.Add("阜阳", 58203);
            dic.Add("蚌埠", 58221);
            dic.Add("淮南", 58224);
            dic.Add("滁州", 58236);
            dic.Add("南京", 58238);
            dic.Add("扬州", 58245);
            dic.Add("泰州", 58246);
            dic.Add("镇江", 58248);
            dic.Add("南通", 58259);
            dic.Add("六安", 58311);
            dic.Add("合肥", 58321);
            dic.Add("巢湖", 58326);
            dic.Add("芜湖", 58334);
            dic.Add("马鞍山", 58336);
            dic.Add("常州", 58343);
            dic.Add("无锡", 58354);
            dic.Add("苏州", 58357);
            dic.Add("上海", 58362);
            dic.Add("黄石", 58407);
            dic.Add("安庆", 58424);
            dic.Add("池州", 58427);
            dic.Add("铜陵", 58429);
            dic.Add("宣城", 58433);
            dic.Add("湖州", 58450);
            dic.Add("嘉兴", 58452);
            dic.Add("绍兴", 58453);
            dic.Add("杭州", 58457);
            dic.Add("舟山", 58477);
            dic.Add("九江", 58502);
            dic.Add("景德镇", 58527);
            dic.Add("金华", 58549);
            dic.Add("南昌", 58606);
            dic.Add("抚州", 58617);
            dic.Add("鹰潭", 58627);
            dic.Add("衢州", 58633);
            dic.Add("丽水", 58646);
            dic.Add("温州", 58659);
            dic.Add("台州", 58660);
            dic.Add("三明", 58828);
            dic.Add("南平", 58834);
            dic.Add("宁德", 58846);
            dic.Add("福州", 58847);
            dic.Add("龙岩", 58927);
            dic.Add("莆田", 58946);
            dic.Add("河池地区", 59023);
            dic.Add("柳州", 59046);
            dic.Add("贺州地区", 59065);
            dic.Add("韶关", 59082);
            dic.Add("漳州", 59126);
            dic.Add("泉州", 59131);
            dic.Add("厦门", 59134);
            dic.Add("百色", 59211);
            dic.Add("来宾", 59242);
            dic.Add("贵港", 59249);
            dic.Add("梧州", 59265);
            dic.Add("肇庆", 59278);
            dic.Add("清远", 59280);
            dic.Add("广州", 59287);
            dic.Add("佛山", 59288);
            dic.Add("东莞", 59289);
            dic.Add("河源", 59293);
            dic.Add("潮州", 59312);
            dic.Add("揭阳", 59315);
            dic.Add("汕头", 59316);
            dic.Add("崇左", 59425);
            dic.Add("玉林", 59453);
            dic.Add("云浮", 59471);
            dic.Add("中山", 59485);
            dic.Add("珠海", 59488);
            dic.Add("深圳", 59493);
            dic.Add("汕尾", 59501);
            dic.Add("高雄", 59554);
            dic.Add("钦州", 59632);
            dic.Add("防城港", 59635);
            dic.Add("北海", 59644);
            dic.Add("湛江", 59658);
            dic.Add("茂名", 59659);
            dic.Add("阳江", 59663);
            dic.Add("海口", 59758);
            dic.Add("三亚", 59948);
            dic.Add("西沙", 59981);
            var rel = dic[key];
            return rel;
        }
    }

查询效果如下:

数据全部都有了,大家可以根据实际需求情况建个对象来获取所需要的数据,这里就不实现了。

三、结语

本文讲述了使用.NET7通过HttpClient的get方法查询天气预报,时间关系未实现全部功能,仅供参考。如果对样式没有要求的话,网上有js的接口,直接粘贴到网页上就可以了。你有啥好的天气预报API吗?欢迎大家留言讨论。文章来源地址https://www.toymoban.com/news/detail-413077.html

来源公众号:DotNet开发跳槽❀                                                    

到了这里,关于.NET7使用HttpClient实现查询天气预报接口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT实现天气预报

    public:     MainWindow(QWidget* parent = nullptr);     ~MainWindow();    protected: 形成文本菜单来用来右键关闭窗口     void contextMenuEvent(QContextMenuEvent* event); 鼠标被点击之后此事件被调用     void mousePressEvent(QMouseEvent *ev); 移动窗口     void mouseMoveEvent(QMouseEvent* ev);     //重写过滤器方法

    2024年02月12日
    浏览(28)
  • 【小程序】微信开发者工具+心知天气API实现天气预报

    问:为什么使用心知天气的天气数据API而不是其他产品? 答: 心知天气为我们提供了一款通过标准的Restful API接口进行数据访问的天气数据API产品; 心智天气官网为我们提供了足够详细的开发文档和用户手册,方便我们快速上手进行开发; 心知天气旗下的天气数据API针对不

    2024年01月16日
    浏览(39)
  • ESP8266获取天气预报信息,并使用CJSON解析天气预报数据

    当前文章介绍如何使用ESP8266和STM32微控制器,搭配OLED显示屏,制作一个能够实时显示天气预报的智能设备。将使用心知天气API来获取天气数据,并使用MQTT协议将数据传递给STM32控制器,最终在OLED显示屏上显示。 心知天气是一家专业的气象数据服务提供商,致力于为全球用户

    2024年02月10日
    浏览(36)
  • Java实现天气预报功能

    如果要实现类似百度天气、手机App这样的天气预报功能该如何实现?首先想到的是百度...                                         最近公司做了一个项目,天气预报的功能也做上去了,不仅有实时天气、未来7天预报的功能、还有气象预警的功能。 天气包括基本天气、白

    2024年02月05日
    浏览(73)
  • 使用HTTP协议在k780网站上获取天气-----天气预报

    本期主要使用TCP网络编程实现天气预报的功能,这个项目旨在于增进对于TCP编程的掌握以及应用,在这个项目中页用到了一种常见的数据格式—cjson数据格式,能够在这个项目中学会使用cjson数据的解析和使用对日后的工作应该是非常有益的;那么不止这些,还有c语言哦,遇

    2024年02月07日
    浏览(47)
  • 天气预报小程序的设计与实现

    实验目的 1、 天气预报 项目的设计与实现; 实验环境 个人手机、与因特网连接的计算机网络系统;主机操作系统为Windows或MAC;微信开发者工具、IE等软件。 数据支持: 进制数据天气预报api   腾讯地图逆地址解析:   实验 项目需求 获取用户位置权限 获取当前位置 根据当

    2024年02月10日
    浏览(49)
  • Vue中使用天气预报

    第一步 : 打开这个网站自己设置好想要的样式 和风天气插件 | 和风天气插件产品,免费、跨终端。适配你的网站、APP、公众号 一般选第一个就好 第二步 : 调整好样式 生成你的代码 最后记得点生成 第三步: 创建一个 新的组件(.vue文件) 在里面写入以下的代码 注意事项写

    2024年02月11日
    浏览(33)
  • 在.NET7中使用MQTTnet简单实现MQTT通信

    一、MQTT简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,主要用于物联网设备间的通信。MQTT协议采用客户端/服务器架构,支持发布/订阅模式和点对点模式,具有高效、可靠、灵活等优点。 MQTT协议主要由三个要素构成:发布者(publisher)、代理服务器(

    2023年04月10日
    浏览(23)
  • 【小项目】微信定时推送天气预报Github项目使用及原理介绍-包含cron、天气预报、常用api...

    一、资料链接 1、github地址 https://github.com/qq1534774766/wx-push 2、教程地址 https://blog.csdn.net/qq15347747/article/details/126521774 3、易客云API(自动发送天气) https://yikeapi.com/account/index 4、apispace-各种接口(名人名言) https://www.apispace.com/console/api?orgId=6356 5、微信公众平台 https://mp.weixin.qq.com/d

    2024年02月02日
    浏览(31)
  • HTML、CSS和JavaScript实现简单天气预报

    使用 HTML、CSS和JavaScript实现简单天气预报 的步骤: 首先需要获取天气API的数据,可以通过向第三方天气数据服务商发送HTTP请求来获取数据。例如,可以使用Yahoo Weather API或OpenWeatherMap API等。这里以OpenWeatherMap API为例,获取当前城市的天气情况。 接着,将获取到的天气数据动

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包