[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.


當麻許的超技八 2014 | Donma Hsu Design.