控制台调用天气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例子的主要内容,如果未能解决你的问题,请参考以下文章