我決定從Google的Weather API中提取信息 - 我在下面使用的代碼正常工作。Google Weather API 403錯誤
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文件?
進一步的研究和建議的
如後所述適應,這絕不是最好的做法,但我已經包括了抓我現在使用的除外。我在Page_Load上運行這個代碼,所以我只做一個回傳到頁面。自那以後我沒有注意到任何問題。性能方面,我並不過分擔心 - 我沒有注意到加載時間有任何增加,並且這種解決方案是暫時的,因爲這些都是爲了測試目的。我仍在使用雅虎的Weather API。
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);
}
}
}
谷歌的文章說明API錯誤處理
感謝:
https://stackoverflow.com/a/12011819/1302173(捕捉403和召回)
https://stackoverflow.com/a/11883388/1302173(錯誤處理和一般谷歌API的信息)
https://stackoverflow.com/a/12000806/1302173(響應處理/ JSON緩存 - 未來的計劃)
替代
我發現這個偉大的開源替代品最近
OpenWeatherMap - Free weather data and forecast API
優秀的答案!我將被推測推測iGoogle的拆除正在影響這項服務。 我隱約地意識到API是「僅供Widget使用」,所以我認爲服務可靠性存在問題並不令人意外。 我會研究使用這些替代方法,並可能調整異常處理背後的想法。再次感謝! – mitchimus 2012-08-10 01:05:43
Sheesh!打破你的嘗試/抓住每個人... +1 – 2012-08-10 02:08:48
截至2012年8月27日,該服務正在響應一致的403錯誤,並顯示一條消息,指出您正在發送自動查詢。: – ClearCrescendo 2012-08-31 19:23:50