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 в таком виде:
 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);
        }
Но в этом случае как вы увидите я не могу посмотреть подробный прогноз, только основные моменты.( И если вам не сложно поясните что называется API допустим того же Yahoo, и как он проявляется в данном виде, спасибо.
Я так-же буду рад любым предложениям по теме. Моя цель получить подробную погоду на ближайшие 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;
                }
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5