Как перейти на новый API погоды Yahoo?

В течение некоторого времени я использую Yahoo Weather Api для получения текущей дневной температуры и прогнозов для статистики в приложении .Net на С#. Судя по всему, Yahoo обновил свой API, и приложение не может получить данные.

Я использую XML-документ, подобный этому, для получения данных

    XmlDocument doc = new XmlDocument();
    doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c");
    XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable);
    ns.AddNamespace("yweather", "http://xml.weather.yahoo.com/ns/rss/1.0");

    XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns);
    link = nod.InnerText;
    ....more nodes selected....

и таким образом я получаю узлы и значения xml для их хранения в базе данных.

Какие изменения мне нужно внести, чтобы приложение работало с новым API?


person athskar    schedule 25.07.2016    source источник


Ответы (1)


Прежде всего, нам нужно изменить URL-адрес, по которому мы запрашиваем прогноз.

 doc.Load("http://xml.yahooapis.com/forecastrss?w=" + WOEID + "&u=c");

to

      query="select%20*%20from%20weather.forecast%20where%20woeid%20%3D%20"+ WOEID 
           + "%20and%20u=%27c%27";
      doc.Load("https://query.yahooapis.com/v1/public/yql?q="+query+"&format=xml
                 &env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys");

затем нам нужно изменить путь к узлам, потому что новый XML-документ немного отличается от старого.

меняться от

XmlNode nod = doc.SelectSingleNode("/rss/channel/link", ns);

to

XmlNode nod = doc.SelectSingleNode("/query/results/channel/link", ns);

и все должно работать нормально.

person athskar    schedule 25.07.2016