介紹如何使用C#抓取API
前言
我們要出去玩時,都會出門前會看一下今天天氣,這時我們就會去APP看今天天氣,突然有個想法,想自己寫一個天氣網頁
流程圖
1.接收client需求
2.發送request去跟API要資料
3.處理respone裡面的資料
4.呈現資料給client
前置作業
首先我們要先去下載C#處理json格式的程式庫
json net
官網:https://www.newtonsoft.com/json
我們也可以在 micsoft visual studio 裡面的Nuget下載
中央氣象局API:https://opendata.cwb.gov.tw/dist/opendata-swagger.html
使用一般天氣預報-今明 36 小時天氣預報API當作範例
API:https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?Authorization=授權碼
中央氣象局開放平台:https://opendata.cwb.gov.tw/index
1.會員登入
2.取得API授權碼
前置作業處理完後就來撰寫我們的程式碼
程式碼
首先要先引入JSON程式庫和HTTP請求程式庫和讀取資料流的程式庫
1 2 3 4
| using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Net; using System.IO;
|
再來我們要寫一個webrequet的請求
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| static public JArray getJson(string uri) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); req.Timeout = 10000; req.Method = "GET"; HttpWebResponse respone = (HttpWebResponse)req.GetResponse(); StreamReader streamReader = new StreamReader(respone.GetResponseStream(), Encoding.UTF8); string result = streamReader.ReadToEnd(); respone.Close(); streamReader.Close(); JObject jsondata = JsonConvert.DeserializeObject<JObject>(result); return (JArray)jsondata["records"]["location"];
}
|
接著呼叫API傳回資料,c#處理資料資料格式為json
回傳新北市json資料
用json online editor 觀看JSON資料
C#程式處理資料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| static void Main(string[] args) { JArray jsondata=getJson("https://opendata.cwb.gov.tw/api/v1/rest/datastore/F-C0032-001?&Authorization={API授權碼}"); foreach(JObject data in jsondata) { string loactionname = (string)data["locationName"]; string weathdescrible = (string)data["weatherElement"][0]["time"][0]["parameter"]["parameterName"]; string pop = (string)data["weatherElement"][1]["time"][0]["parameter"]["parameterName"]; string mintemperature = (string)data["weatherElement"][2]["time"][0]["parameter"]["parameterName"]; string maxtemperature = (string)data["weatherElement"][4]["time"][0]["parameter"]["parameterName"]; Console.WriteLine(loactionname + " 天氣:" + weathdescrible + " 溫度:" + mintemperature + "°c-" + maxtemperature + "°c 降雨機率:" + pop + "%"); } Console.ReadLine(); }
|
result
結語
利用中央氣象局的免費api我們就可以自己製作自己的天氣網頁或是天氣app,以後就不用看新聞的天氣預報。