Google Weather API 403 Błąd [duplikat]

To pytanie ma już tutaj odpowiedź:

Zniknął Google Weather API? 4 odpowiedzi

Zdecydowałem się pobrać informacje z Google Weather Weather API - Kod, którego używam poniżej, działa poprawnie.

            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");
        }
     }

Jak już powiedziałem, jestem w stanie pobrać wymagane dane z pliku XML i wyświetlić je, jednak jeśli strona jest odświeżona lub bieżąca sesja jest nadal aktywna, pojawia się następujący błąd:

WebException nie był obsługiwany przez kod użytkownika - zdalny serwer zwrócił błąd: 403 Forbidden Exception.

Zastanawiam się, czy może to być związane z jakimś ograniczeniem dostępu do dostępu do tego konkretnego pliku XML?

Dalsze badania i adaptacja sugestii

Jak stwierdzono poniżej, w żadnym wypadku nie jest to najlepsza praktyka, ale do wyjątku dodałem haczyk, którego teraz używam. Używam tego kodu na stronie PageLLoad, więc po prostu robię post-back do strony. Od tamtej pory nie zauważyłem żadnych problemów. Wydajność nie jestem zbytnio zaniepokojona - nie zauważyłem żadnego wzrostu czasu ładowania i to rozwiązanie jest tymczasowe, ponieważ to wszystko służy do celów testowych. Nadal jestem w trakcie korzystania z API pogody 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);
                }

            }
        }
Artykuł Google ilustrujący obsługę błędów interfejsu API

Błędy uchwytu interfejsu API Google

Dzięki:

https://stackoverflow.com/a/12011819/1302173 (Złap 403 i przypomnij sobie)

https://stackoverflow.com/a/11883388/1302173 (Obsługa błędów i ogólne informacje o interfejsie API Google)

https://stackoverflow.com/a/12000806/1302173 (Obsługa reakcji / buforowanie json - Plany na przyszłość)

Alternatywny

Niedawno znalazłem tę świetną alternatywę open source

OpenWeatherMap - bezpłatne dane pogodowe i API prognoz

questionAnswers(4)

yourAnswerToTheQuestion