Google Weather API 403-Fehler [Duplikat]

Diese Frage hat hier bereits eine Antwort:

Google Weather API nicht mehr verfügbar? 4 Antworten

Ich habe beschlossen, Informationen aus der Google-Wetter-API abzurufen. Der Code, den ich unten verwende, funktioniert einwandfrei.

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

Wie bereits erwähnt, kann ich die erforderlichen Daten aus der XML-Datei abrufen und anzeigen. Wenn jedoch die Seite aktualisiert wird oder eine aktuelle Sitzung noch aktiv ist, wird die folgende Fehlermeldung angezeigt:

WebException wurde vom Benutzercode nicht behandelt - Der Remoteserver hat einen Fehler zurückgegeben: 403 Forbidden Exception.

Ich frage mich, ob dies mit einer Zugriffsbeschränkung für den Zugriff auf diese bestimmte XML-Datei zu tun haben könnte.

Weitere Recherche und Anpassung von Vorschlägen

Wie unten angegeben, handelt es sich keinesfalls um eine bewährte Methode, aber ich habe den Fang eingeschlossen, den ich jetzt für die Ausnahme verwende. Ich führe diesen Code auf Page Load aus, damit ich nur einen Post-Back zur Seite mache. Ich habe seitdem keine Probleme bemerkt. In Bezug auf die Leistung bin ich nicht sonderlich besorgt - ich habe keine Verlängerung der Ladezeit bemerkt und diese Lösung ist nur vorübergehend, da dies alles zu Testzwecken dient. Ich bin immer noch dabei, die Wetter-API von Yahoo zu verwenden.

        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-Artikel zur API-Fehlerbehandlung

Google API-Handle-Fehler

Dank an:

https://stackoverflow.com/a/12011819/1302173 (Fang 403 und Rückruf)

https://stackoverflow.com/a/11883388/1302173 (Fehlerbehandlung und allgemeine Google API-Informationen)

https://stackoverflow.com/a/12000806/1302173 (Response Handling / Json Caching - Zukunftspläne)

Alternative

Ich habe diese großartige Open-Source-Alternative kürzlich gefunden

OpenWeatherMap - Kostenlose Wetterdaten- und Vorhersage-API

Antworten auf die Frage(4)

Ihre Antwort auf die Frage