Ho deciso di estrarre le informazioni dall'API di Google Meteo: il codice che sto utilizzando di seguito funziona correttamente.Google Weather API 403 Errore
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");
}
}
come ho già detto, io sono in grado di tirare i dati richiesti dal file XML e visualizzarlo, se la pagina viene aggiornata o una sessione di corrente è ancora attivo, ricevo il seguente errore:
WebException was unhandled by user code - The remote server returned an error: 403 Forbidden Exception.
Mi chiedo se questo potrebbe avere a che fare con qualche tipo di limitazione dell'accesso all'accesso a quel particolare file XML?
ulteriori ricerche e l'adattamento dei suggerimenti
come indicato di seguito, questo non è affatto buone prassi, ma ho incluso la cattura io uso per l'eccezione. Eseguo questo codice su Page_Load, quindi faccio solo un postback alla pagina. Non ho notato alcun problema da allora. Per quanto riguarda le prestazioni, non sono eccessivamente preoccupato - non ho notato alcun aumento del tempo di caricamento e questa soluzione è temporanea a causa del fatto che questo è tutto a scopo di test. Sto ancora utilizzando l'API meteo di 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);
}
}
}
articolo Google movimentazione
Grazie errore illustrando API per:
https://stackoverflow.com/a/12011819/1302173 (Cattura 403 e richiamo)
https://stackoverflow.com/a/11883388/1302173 (gestione degli errori e generale di Google informazioni API)
https://stackoverflow.com/a/12000806/1302173 (Response Handling/JSON caching - Progetti per il futuro)
alternativa
ho trovato questa grande alternativa open source di recente
OpenWeatherMap - Free weather data and forecast API
Ottima risposta! Sarei spinto a ipotizzare che lo smantellamento di iGoogle stia influenzando questo servizio. Ero vagamente consapevole del fatto che l'API era "solo per uso di widget", quindi suppongo che non sia eccessivamente sorprendente che ci siano problemi con l'affidabilità del servizio. Cercherò di utilizzare queste alternative e magari di adattare le idee alla base della gestione delle eccezioni. Grazie ancora! – mitchimus
Sheesh! Prova il tuo tentativo/cattura tutti ... +1 –
A partire dal 27 agosto 2012 il servizio risponde con un errore 403 coerente e un messaggio che indica che stai inviando query automatiche .: – ClearCrescendo