Google Weather API 403 Ошибка [повторяется]

This question already has an answer here:

Google Weather API gone? 4 answers

Я решил получить информацию из Google Weather API - код, который я использую ниже, работает нормально.

            XmlDocument widge = new XmlDocument();
            widge.Load("https://www.google.com/ig/api?weather=Brisbane/dET7zIp38kGFSFJeOpWUZS3-");
            var weathlist = widge.GetElementsByTagName("current_conditions");
            foreach (XmlNode node in weathlist)
            {

                City.Text = ("Brisbane");
                CurCond.Text = (node.SelectSingleNode("condition").Attributes["data"].Value);
                Wimage.ImageUrl = ("http://www.google.com/" + node.SelectSingleNode("icon").Attributes["data"].Value);
                Temp.Text = (node.SelectSingleNode("temp_c").Attributes["data"].Value + "°C");
        }
     }

Как я уже сказал, я могу извлечь необходимые данные из файла XML и отобразить их, однако, если страница обновляется или текущий сеанс все еще активен, я получаю следующую ошибку:

WebException was unhandled by user code - The remote server returned an error: 403 Forbidden Exception.

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

Further research and adaptation of suggestions

Как указано ниже, это ни в коем случае не лучшая практика, но я включил улов, который я сейчас использую, для исключения. Я запускаю этот код на Page_Load, поэтому просто делаю постбэк на страницу. С тех пор я не заметил никаких проблем. С точки зрения производительности я не слишком обеспокоен - я не заметил какого-либо увеличения времени загрузки, и это решение является временным, потому что это все для целей тестирования. Я все еще нахожусь в процессе использования Погодного API Yahoo.

        try
        {
            XmlDocument widge = new XmlDocument();
            widge.Load("https://www.google.com/ig/api?weather=Brisbane/dET7zIp38kGFSFJeOpWUZS3-");
            var list2 = widge.GetElementsByTagName("current_conditions");
            foreach (XmlNode node in list2)
            {

                City.Text = ("Brisbane");
                CurCond.Text = (node.SelectSingleNode("condition").Attributes["data"].Value);
                Wimage.ImageUrl = ("http://www.google.com/" + node.SelectSingleNode("icon").Attributes["data"].Value);
                Temp.Text = (node.SelectSingleNode("temp_c").Attributes["data"].Value + "°C");

            }
        }
        catch (WebException exp)
        {
            if (exp.Status == WebExceptionStatus.ProtocolError &&
                exp.Response != null)
            {
                var webres = (HttpWebResponse)exp.Response;
                if (webres.StatusCode == HttpStatusCode.Forbidden)
                {
                    Response.Redirect(ithwidgedev.aspx);
                }

            }
        }
Google article illustrating API error handling

Ошибки обработки API Google

Thanks to:

https://stackoverflow.com/a/12011819/1302173 (Поймать 403 и вспомнить)

https://stackoverflow.com/a/11883388/1302173 (Обработка ошибок и общая информация API Google)

https://stackoverflow.com/a/12000806/1302173 (Обработка ответов / кэширование JSON - планы на будущее)

Alternative

Я нашел эту отличную альтернативу с открытым исходным кодом недавно

OpenWeatherMap - бесплатный API данных о погоде и прогнозах

Ответы на вопрос(4)

Ваш ответ на вопрос