第一步, 新建控制台应用程序, 然后新建类: 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 item from weather.forecast where woeid in (2151330 )&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 item from weather.forecast where woeid in (2151330 )&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();
}
}
}
}
}
运行结果:
来源: https://www.cnblogs.com/iframe/p/8397434.html