zoukankan      html  css  js  c++  java
  • 控制台调用天气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("
    ");
    
                        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();
                    }
                }
            }  
        }
    }
    

     运行结果:

  • 相关阅读:
    vue 中简单路由的实现
    Vue中对生命周期的理解
    内存泄漏
    前端工程化
    exports 和 module.exports 的区别
    Nodejs的url模块方法
    MongoDB 的获取和安装
    Anjular JS 的一些运用
    移动端vconsole调试
    安装fiddler时,电脑浏览器没网
  • 原文地址:https://www.cnblogs.com/iframe/p/8397434.html
Copyright © 2011-2022 走看看