API Yahoo Weather - C#
Формулировка задачи:
Всем привет, по данной ссылке описан серсив Yahoo -> http://www.wunderground.com/weather/api/d/docs?MR=1. Если кто-то работал с этим зверем, может остались какие-то примерчики, потому что я впервые разбираюсь с такой штукой. Я понял что можно вернуть ифнормацию запросом GET http://api.wunderground.com/api/Your...q/query.format, но не исею пока понятия как организовать это дело.
До этого парсил данные по RSS в таком виде:
Но в этом случае как вы увидите я не могу посмотреть подробный прогноз, только основные моменты.( И если вам не сложно поясните что называется API допустим того же Yahoo, и как он проявляется в данном виде, спасибо.
public void GetCurrentWeather() { Weather currWeather = new Weather(); string query = string.Format("http://weather.yahooapis.com/forecastrss?w=918981&u=c"); XmlDocument wData = new XmlDocument(); wData.Load(query); XmlNamespaceManager manager = new XmlNamespaceManager(wData.NameTable); manager.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0"); XmlNode channel = wData.SelectSingleNode("rss").SelectSingleNode("channel"); XmlNodeList nodes = wData.SelectNodes("/rss/channel/item/yweather:forecast", manager); currWeather.Date = channel.SelectSingleNode("lastBuildDate").InnerText; currWeather.Temperature = channel.SelectSingleNode("item").SelectSingleNode("yweather:condition", manager).Attributes["temp"].Value; currWeather.Condition = channel.SelectSingleNode("item").SelectSingleNode("yweather:condition", manager).Attributes["text"].Value; currWeather.Humidity = channel.SelectSingleNode("yweather:atmosphere", manager).Attributes["humidity"].Value; currWeather.WindSpeed = channel.SelectSingleNode("yweather:wind", manager).Attributes["speed"].Value; currWeather.Town = channel.SelectSingleNode("yweather:location", manager).Attributes["city"].Value; currWeather.TСCond = channel.SelectSingleNode("item").SelectSingleNode("yweather:forecast", manager).Attributes["text"].Value; currWeather.TСHigh = channel.SelectSingleNode("item").SelectSingleNode("yweather:forecast", manager).Attributes["high"].Value; currWeather.TСLow = channel.SelectSingleNode("item").SelectSingleNode("yweather:forecast", manager).Attributes["low"].Value; ShowCurrentWeahter(currWeather); }
Я так-же буду рад любым предложениям по теме. Моя цель получить подробную погоду на ближайшие 5(10) дней с Yahoo, программа будет писаться на WPF.
Немного разобрался, но если кто-то работал, скиньте примерчик( пожалуйста.
Решение задачи: «API Yahoo Weather»
textual
Листинг программы
using System; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Newtonsoft.Json.Linq; /* {"response":{"count":6,"items": [{"id":3484,"first_name":"Наталия","last_name":"Илларионова","city": {"id":198,"title":"Wien"},"hidden":1}, {"id":382170,"first_name":"Даша","last_name":"Рузанова","city": {"id":2,"title":"Санкт-Петербург"}}, {"id":2314852,"first_name":"Ирина","last_name":"Денежкина","city":{"id":2,"title":"Санкт-Петербург"},"hidden":1}, {"id":22152575,"first_name":"Лена","last_name":"Чистанова","city": {"id":2,"title":"Санкт-Петербург"}}, {"id":146734318,"first_name":"Дмитрий","last_name":"Ванюков"}, {"id":211549005,"first_name":"Наташа","last_name":"Мейнгард","city": {"id":198,"title":"Wien"}}]}}Наталия Илларионова */ namespace GetListOfFriendsJSON { class User { public string FirstName { get; set; } public string LastName { get; set; } } public partial class Form1 : Form { public Form1() { InitializeComponent(); textBoxOutput.ScrollBars = ScrollBars.Both; textBoxOutput.WordWrap = false; } private async void buttonGetListOfFriends_Click(object sender, EventArgs e) { buttonGetListOfFriends.Enabled = false; await GetListOfFriends(); buttonGetListOfFriends.Enabled = true; } private async Task GetListOfFriends() { using (var w = new WebClient()) { w.Encoding = Encoding.UTF8; string resp = await w.DownloadStringTaskAsync("https://api.vk.com/method/friends.get?fields=city&user_id=185014513&v=5.45"); JObject json = JObject.Parse(resp); JArray users = (JArray)json["response"]["items"]; // Можно без создания класса User: //var query = from user in users // select new // { // FirstName = user["first_name"], // LastName = user["last_name"] // }; var query = from user in users select new User { FirstName = user["first_name"].ToString(), LastName = user["last_name"].ToString() }; foreach (var user in query) { textBoxOutput.Text += user.FirstName + " " + user.LastName + Environment.NewLine; textBoxOutput.Text += Environment.NewLine; } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д