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 WeatherReport
{
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();
WeatherInfo report = Newtonsoft.Json.JsonConvert.DeserializeObject<WeatherInfo>(WeatherState);
Console.WriteLine("\n");
Console.WriteLine("Weather Station: Beijing");
Console.WriteLine("Temperature Details");
Console.WriteLine("-----------------------------------------------------------");
Console.WriteLine("温度(C): " + (report.temp - 32) * 0.55);// Converted from Fahrenheit to Celsius
Console.WriteLine("天气状态: " + report.text);
Console.WriteLine("时间: " + report.date);
Console.ReadLine();
}
}
}
}
public class WeatherInfo
{
public string date { get; set; }
public long temp { get; set; }
public string text { get; set; }
}
}