[C#] 查詢WOEID
2015-04-16
最近公司下令要弄一些天氣的東西,所以得查一下網路上面免費的天氣API
我看了下yahoo天氣,大家的作法好像是去
http://weather.yahooapis.com/forecastrss?w=12703519 拿資料
w這參數傳的是woeid ,但是這東西從哪裡來呢?
網路上找到一些方法可以查詢woeid ,所以就寫blog 筆記一下
首先: 假設我的緯經度是 25.031288,121.543870
這時候只要呼叫
http://query.yahooapis.com/v1/public/yql?q=select woeid from geo.placefinder where text='25.031288,121.543870' and gflags='R'&format=json
就可以得到回傳的json ,這樣就簡單多了
{"query":{"count":1,"created":"2015-04-16T04:32:40Z","lang":"zh-TW","results":{"Result":{"woeid":"12703519"}}}}
直接貼上C# Code:
protected void Button4_Click(object sender, EventArgs e)
{
var wc = new WebClient();
string url = "http://query.yahooapis.com/v1/public/yql?q=select woeid from geo.placefinder where text='25.031288,121.543870' and gflags='R'&format=json";
wc.Encoding = Encoding.UTF8;
string result = wc.DownloadString(url);
// 其中處理 用到 JSON.net 詳情參考
// http://www.dotblogs.com.tw/junegoat/archive/2012/04/30/asp-net-json-javascriptserializer-serialization.aspx
// 其中,為了教學簡化,所以用dynamic 來處理,就沒有獨立產生物件來製作
var woeid = JsonConvert.DeserializeObject<dynamic>(result).query.results.Result.woeid.ToString();
Response.Write(woeid);
}
這樣就可以拿到 12703519 的 WOEID code.