第一步,新建控制台应用程序,然后新建类: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),比如北京是:
/api/location/search/?query=beijing
第三步编写Program类:
woeid在Program类中用的到,URL地址(可复制到浏览器中查看格式内容):
/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 .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("/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 .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();}}} }}
运行结果: