控制台调用天气API例子

Posted 要有梦想,即使遥远...

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制台调用天气API例子相关的知识,希望对你有一定的参考价值。

第一步,新建控制台应用程序,然后新建类:WeatherReport:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class WeatherReport
    {
        public string date { get; set; }

        public long temp { get; set; }

        public string text { get; set; }


    }
}

 第二步,要获取需要的城市的woeid(where on earch id),比如北京是:

https://www.metaweather.com/api/location/search/?query=beijing

 

第三步编写Program类:

 woeid在Program类中用的到,URL地址(可复制到浏览器中查看格式内容):

https://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20woeid%20in%20(2151330%20)&format=json

 

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpClient client = new HttpClient();
            client.BaseAddress = new Uri("https://query.yahooapis.com/v1/public/yql?q=select%20item%20from%20weather.forecast%20where%20woeid%20in%20(2151330%20)&format=json");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            GetWeather(client).Wait();  
        }

        static async Task GetWeather(HttpClient cons)
        {
            using (cons)
            {
                HttpResponseMessage res = await cons.GetAsync("");

                res.EnsureSuccessStatusCode();
                if (res.IsSuccessStatusCode)
                {
                    string weather = await res.Content.ReadAsStringAsync();

                    JObject jobj = JObject.Parse(weather);
                    JToken jToken = jobj.First;
                    string WeatherState = jToken.First["results"]["channel"]["item"]["condition"].ToString();
                    WeatherReport report = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherReport>(WeatherState);
                    Console.WriteLine("\\n");

                    Console.WriteLine("Weather Station: Beijing");
                    Console.WriteLine("Temperature Details");
                    Console.WriteLine("-----------------------------------------------------------");
                    Console.WriteLine("Temperature (in deg. C): " + (report.temp - 32) * 0.55);// Converted from Fahrenheit to Celsius  
                    Console.WriteLine("Weather State: " + report.text);
                    Console.WriteLine("Applicable Time: " + report.date);
                    Console.ReadLine();
                }
            }
        }  
    }
}

 

 运行结果:

 

以上是关于控制台调用天气API例子的主要内容,如果未能解决你的问题,请参考以下文章

使用python调用和风天气API查询当前天气信息

用 Node.js 的 16 行代码创建一个简单的天气 App

ForYouFragment 片段不更新

基于java高德天气的接口调用

微信小程序入门:和风天气小程序

调用阿里API获取城市天气信息