翼度科技»论坛 编程开发 .net 查看内容

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

8

主题

8

帖子

24

积分

新手上路

Rank: 1

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

天气接口

城市编码
HttpClient是.net core平台最常用的http请求工具,它直接基于Socket开发,提供了异步友好的代码编写方式,它在System.Net.Http命名空间下。
一、新建环境
首先新建一个.NET7 Asp.net core web Api程序。如下选项。

二、在控制器中新建GetWeather
我们这里用get方法请求,通过传入城市名查询天气预报,城市的名称和编码放到Dictionary,单独使用一个方法查询。代码如下:
  1. [HttpGet(Name = "GetWeather")]
  2.  public async Task<IActionResult> GetWeather(string cityName)
  3. {
  4.      //编码查询单独使用了一个方法
  5.      int citycode = publicfun.GetKeys(cityName);
  6.      using var client = new HttpClient();
  7.      //请求的基础地址,一般是域名
  8.      client.BaseAddress = new Uri("http://www.nmc.cn");
  9.      //在请求标头中,我们指定User-Agent
  10.      client.DefaultRequestHeaders.Add("User-Agent", "CJAVAPY BOT");
  11.      client.DefaultRequestHeaders.Accept.Add(
  12.            //设置accept标头,告诉JSON是可接受的响应类型
  13.              new MediaTypeWithQualityHeaderValue("application/json"));
  14.     //实际请求地址
  15.      var url =$"rest/weather?stationid={citycode}&_=1672315767048";
  16.      HttpResponseMessage response = await client.GetAsync(url);//get请求
  17.      response.EnsureSuccessStatusCode();
  18.      var result= await response.Content.ReadAsStringAsync();//获取结果
  19.      return JsonResult(result) ;//返回json
  20. }
复制代码
全国各个城市编码字典方法如下
  1. public static class publicfun
  2.     {
  3.         public static int GetKeys(string key)
  4.         {
  5.             Dictionary<string, int> dic = new Dictionary<string, int>();
  6.             dic.Add("澳门", 45011);
  7.             dic.Add("大兴安岭", 50442);
  8.             dic.Add("黑河", 50468);
  9.             dic.Add("齐齐哈尔", 50745);
  10.             dic.Add("伊春", 50774);
  11.             dic.Add("鹤岗", 50775);
  12.             dic.Add("绥化", 50853);
  13.             dic.Add("佳木斯", 50873);
  14.             dic.Add("双鸭山", 50884);
  15.             dic.Add("白城", 50936);
  16.             dic.Add("哈尔滨", 50953);
  17.             dic.Add("七台河", 50973);
  18.             dic.Add("鸡西", 50978);
  19.             dic.Add("阿勒泰", 51076);
  20.             dic.Add("塔城", 51133);
  21.             dic.Add("博州", 51238);
  22.             dic.Add("克拉玛依", 51243);
  23.             dic.Add("石河子", 51356);
  24.             dic.Add("昌吉", 51368);
  25.             dic.Add("伊宁", 51431);
  26.             dic.Add("乌鲁木齐", 51463);
  27.             dic.Add("吐鲁番", 51573);
  28.             dic.Add("阿克苏", 51628);
  29.             dic.Add("巴州", 51656);
  30.             dic.Add("克州", 51704);
  31.             dic.Add("喀什", 51709);
  32.             dic.Add("和田", 51828);
  33.             dic.Add("哈密", 52203);
  34.             dic.Add("酒泉", 52533);
  35.             dic.Add("张掖", 52652);
  36.             dic.Add("金昌", 52675);
  37.             dic.Add("武威", 52679);
  38.             dic.Add("西宁", 52866);
  39.             dic.Add("平安县", 52875);
  40.             dic.Add("兰州", 52889);
  41.             dic.Add("白银", 52896);
  42.             dic.Add("同仁县", 52974);
  43.             dic.Add("临夏", 52984);
  44.             dic.Add("定西", 52995);
  45.             dic.Add("包头", 53446);
  46.             dic.Add("呼和浩特", 53463);
  47.             dic.Add("大同", 53487);
  48.             dic.Add("乌海", 53512);
  49.             dic.Add("石嘴山", 53518);
  50.             dic.Add("朔州", 53578);
  51.             dic.Add("吴忠", 53612);
  52.             dic.Add("银川", 53614);
  53.             dic.Add("榆林", 53646);
  54.             dic.Add("忻州", 53674);
  55.             dic.Add("石家庄", 53698);
  56.             dic.Add("太原", 53772);
  57.             dic.Add("阳泉", 53782);
  58.             dic.Add("邢台", 53798);
  59.             dic.Add("固原", 53817);
  60.             dic.Add("延安", 53845);
  61.             dic.Add("临汾", 53868);
  62.             dic.Add("长治", 53882);
  63.             dic.Add("邯郸", 53892);
  64.             dic.Add("安阳", 53898);
  65.             dic.Add("平凉", 53915);
  66.             dic.Add("铜川", 53947);
  67.             dic.Add("运城", 53959);
  68.             dic.Add("晋城", 53976);
  69.             dic.Add("济源", 53978);
  70.             dic.Add("焦作", 53982);
  71.             dic.Add("新乡", 53986);
  72.             dic.Add("鹤壁", 53990);
  73.             dic.Add("牡丹江", 54094);
  74.             dic.Add("通辽", 54135);
  75.             dic.Add("四平", 54157);
  76.             dic.Add("长春", 54161);
  77.             dic.Add("吉林", 54172);
  78.             dic.Add("赤峰", 54218);
  79.             dic.Add("阜新", 54237);
  80.             dic.Add("铁岭", 54249);
  81.             dic.Add("辽源", 54260);
  82.             dic.Add("锦州", 54337);
  83.             dic.Add("盘锦", 54338);
  84.             dic.Add("鞍山", 54339);
  85.             dic.Add("沈阳", 54342);
  86.             dic.Add("本溪", 54346);
  87.             dic.Add("辽阳", 54347);
  88.             dic.Add("通化", 54363);
  89.             dic.Add("白山", 54371);
  90.             dic.Add("张家口", 54401);
  91.             dic.Add("承德", 54423);
  92.             dic.Add("秦皇岛", 54449);
  93.             dic.Add("葫芦岛", 54453);
  94.             dic.Add("营口", 54471);
  95.             dic.Add("丹东", 54497);
  96.             dic.Add("北京", 54511);
  97.             dic.Add("廊坊", 54515);
  98.             dic.Add("天津", 54527);
  99.             dic.Add("唐山", 54534);
  100.             dic.Add("保定", 54602);
  101.             dic.Add("沧州", 54616);
  102.             dic.Add("大连", 54662);
  103.             dic.Add("衡水", 54702);
  104.             dic.Add("德州", 54714);
  105.             dic.Add("滨州", 54734);
  106.             dic.Add("东营", 54736);
  107.             dic.Add("烟台", 54765);
  108.             dic.Add("威海", 54774);
  109.             dic.Add("聊城", 54806);
  110.             dic.Add("济南", 54823);
  111.             dic.Add("泰安", 54827);
  112.             dic.Add("莱芜", 54828);
  113.             dic.Add("淄博", 54830);
  114.             dic.Add("潍坊", 54843);
  115.             dic.Add("青岛", 54857);
  116.             dic.Add("濮阳", 54900);
  117.             dic.Add("菏泽", 54906);
  118.             dic.Add("济宁", 54915);
  119.             dic.Add("临沂", 54938);
  120.             dic.Add("日照", 54945);
  121.             dic.Add("噶尔县", 55437);
  122.             dic.Add("日喀则", 55578);
  123.             dic.Add("拉萨", 55591);
  124.             dic.Add("合作", 56080);
  125.             dic.Add("昌都县", 56137);
  126.             dic.Add("绵阳", 56196);
  127.             dic.Add("德阳", 56198);
  128.             dic.Add("雅安", 56287);
  129.             dic.Add("成都", 56294);
  130.             dic.Add("资阳", 56298);
  131.             dic.Add("林芝县", 56312);
  132.             dic.Add("乐山", 56386);
  133.             dic.Add("眉山", 56391);
  134.             dic.Add("自贡", 56396);
  135.             dic.Add("宜宾", 56492);
  136.             dic.Add("昭通", 56586);
  137.             dic.Add("丽江", 56651);
  138.             dic.Add("攀枝花", 56666);
  139.             dic.Add("六盘水", 56693);
  140.             dic.Add("保山", 56748);
  141.             dic.Add("大理", 56751);
  142.             dic.Add("楚雄", 56768);
  143.             dic.Add("昆明", 56778);
  144.             dic.Add("曲靖", 56783);
  145.             dic.Add("玉溪", 56875);
  146.             dic.Add("临沧县", 56951);
  147.             dic.Add("思茅", 56964);
  148.             dic.Add("文山县", 56994);
  149.             dic.Add("天水", 57006);
  150.             dic.Add("宝鸡", 57016);
  151.             dic.Add("西安", 57036);
  152.             dic.Add("渭南", 57045);
  153.             dic.Add("咸阳", 57048);
  154.             dic.Add("三门峡", 57051);
  155.             dic.Add("洛阳", 57073);
  156.             dic.Add("郑州", 57083);
  157.             dic.Add("许昌", 57089);
  158.             dic.Add("开封", 57091);
  159.             dic.Add("南阳", 57178);
  160.             dic.Add("漯河", 57186);
  161.             dic.Add("周口", 57195);
  162.             dic.Add("广元", 57206);
  163.             dic.Add("安康", 57245);
  164.             dic.Add("襄樊", 57278);
  165.             dic.Add("驻马店", 57290);
  166.             dic.Add("信阳", 57297);
  167.             dic.Add("巴中", 57313);
  168.             dic.Add("达州", 57328);
  169.             dic.Add("荆门", 57377);
  170.             dic.Add("随州", 57381);
  171.             dic.Add("遂宁", 57405);
  172.             dic.Add("南充", 57411);
  173.             dic.Add("广安", 57415);
  174.             dic.Add("恩施", 57447);
  175.             dic.Add("宜昌", 57461);
  176.             dic.Add("荆州", 57476);
  177.             dic.Add("孝感", 57482);
  178.             dic.Add("武汉", 57494);
  179.             dic.Add("鄂州", 57496);
  180.             dic.Add("黄冈", 57498);
  181.             dic.Add("重庆", 57516);
  182.             dic.Add("大庸", 57558);
  183.             dic.Add("岳阳", 57584);
  184.             dic.Add("咸宁", 57590);
  185.             dic.Add("常德", 57662);
  186.             dic.Add("益阳", 57674);
  187.             dic.Add("长沙", 57687);
  188.             dic.Add("毕节", 57707);
  189.             dic.Add("遵义", 57713);
  190.             dic.Add("铜仁", 57741);
  191.             dic.Add("怀化", 57749);
  192.             dic.Add("娄底", 57763);
  193.             dic.Add("邵阳", 57766);
  194.             dic.Add("湘潭", 57773);
  195.             dic.Add("株洲", 57780);
  196.             dic.Add("萍乡", 57786);
  197.             dic.Add("宜春", 57793);
  198.             dic.Add("新余", 57796);
  199.             dic.Add("安顺", 57806);
  200.             dic.Add("贵阳", 57816);
  201.             dic.Add("凯里", 57825);
  202.             dic.Add("都匀", 57827);
  203.             dic.Add("衡阳", 57872);
  204.             dic.Add("桂林", 57957);
  205.             dic.Add("郴州", 57972);
  206.             dic.Add("赣州", 57993);
  207.             dic.Add("商丘", 58005);
  208.             dic.Add("枣庄", 58024);
  209.             dic.Add("徐州", 58027);
  210.             dic.Add("连云港", 58044);
  211.             dic.Add("亳州", 58102);
  212.             dic.Add("淮北", 58116);
  213.             dic.Add("宿州", 58122);
  214.             dic.Add("宿迁", 58131);
  215.             dic.Add("淮安", 58145);
  216.             dic.Add("盐城", 58151);
  217.             dic.Add("阜阳", 58203);
  218.             dic.Add("蚌埠", 58221);
  219.             dic.Add("淮南", 58224);
  220.             dic.Add("滁州", 58236);
  221.             dic.Add("南京", 58238);
  222.             dic.Add("扬州", 58245);
  223.             dic.Add("泰州", 58246);
  224.             dic.Add("镇江", 58248);
  225.             dic.Add("南通", 58259);
  226.             dic.Add("六安", 58311);
  227.             dic.Add("合肥", 58321);
  228.             dic.Add("巢湖", 58326);
  229.             dic.Add("芜湖", 58334);
  230.             dic.Add("马鞍山", 58336);
  231.             dic.Add("常州", 58343);
  232.             dic.Add("无锡", 58354);
  233.             dic.Add("苏州", 58357);
  234.             dic.Add("上海", 58362);
  235.             dic.Add("黄石", 58407);
  236.             dic.Add("安庆", 58424);
  237.             dic.Add("池州", 58427);
  238.             dic.Add("铜陵", 58429);
  239.             dic.Add("宣城", 58433);
  240.             dic.Add("湖州", 58450);
  241.             dic.Add("嘉兴", 58452);
  242.             dic.Add("绍兴", 58453);
  243.             dic.Add("杭州", 58457);
  244.             dic.Add("舟山", 58477);
  245.             dic.Add("九江", 58502);
  246.             dic.Add("景德镇", 58527);
  247.             dic.Add("金华", 58549);
  248.             dic.Add("南昌", 58606);
  249.             dic.Add("抚州", 58617);
  250.             dic.Add("鹰潭", 58627);
  251.             dic.Add("衢州", 58633);
  252.             dic.Add("丽水", 58646);
  253.             dic.Add("温州", 58659);
  254.             dic.Add("台州", 58660);
  255.             dic.Add("三明", 58828);
  256.             dic.Add("南平", 58834);
  257.             dic.Add("宁德", 58846);
  258.             dic.Add("福州", 58847);
  259.             dic.Add("龙岩", 58927);
  260.             dic.Add("莆田", 58946);
  261.             dic.Add("河池地区", 59023);
  262.             dic.Add("柳州", 59046);
  263.             dic.Add("贺州地区", 59065);
  264.             dic.Add("韶关", 59082);
  265.             dic.Add("漳州", 59126);
  266.             dic.Add("泉州", 59131);
  267.             dic.Add("厦门", 59134);
  268.             dic.Add("百色", 59211);
  269.             dic.Add("来宾", 59242);
  270.             dic.Add("贵港", 59249);
  271.             dic.Add("梧州", 59265);
  272.             dic.Add("肇庆", 59278);
  273.             dic.Add("清远", 59280);
  274.             dic.Add("广州", 59287);
  275.             dic.Add("佛山", 59288);
  276.             dic.Add("东莞", 59289);
  277.             dic.Add("河源", 59293);
  278.             dic.Add("潮州", 59312);
  279.             dic.Add("揭阳", 59315);
  280.             dic.Add("汕头", 59316);
  281.             dic.Add("崇左", 59425);
  282.             dic.Add("玉林", 59453);
  283.             dic.Add("云浮", 59471);
  284.             dic.Add("中山", 59485);
  285.             dic.Add("珠海", 59488);
  286.             dic.Add("深圳", 59493);
  287.             dic.Add("汕尾", 59501);
  288.             dic.Add("高雄", 59554);
  289.             dic.Add("钦州", 59632);
  290.             dic.Add("防城港", 59635);
  291.             dic.Add("北海", 59644);
  292.             dic.Add("湛江", 59658);
  293.             dic.Add("茂名", 59659);
  294.             dic.Add("阳江", 59663);
  295.             dic.Add("海口", 59758);
  296.             dic.Add("三亚", 59948);
  297.             dic.Add("西沙", 59981);
  298.             var rel = dic[key];
  299.             return rel;
  300.         }
  301.     }
复制代码
查询效果如下:

数据全部都有了,大家可以根据实际需求情况建个对象来获取所需要的数据,这里就不实现了。
三、结语
本文讲述了使用.NET7通过HttpClient的get方法查询天气预报,时间关系未实现全部功能,仅供参考。如果对样式没有要求的话,网上有js的接口,直接粘贴到网页上就可以了。你有啥好的天气预报API吗?欢迎大家留言讨论。
  1. 来源公众号:DotNet开发跳槽❀                                                    
复制代码
来源:https://www.cnblogs.com/xbhp/archive/2023/04/14/17317951.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具