天氣預報資訊用途非常廣泛。手機 ,APP,OTT盒子,WEB網站均在大範圍使用。前段時間也都動手寫了下相關代碼,并成功實作了下。在此分享 并記錄如下。
主要是利用libcurl libjansson這2個庫,完成主要功能
主要步驟如下:
1.擷取本地 連結外網的IP位址,不是本機的IP位址;
向特定IP資料庫網站送出請求,傳回JSON格式的資料資訊并解析JSON資料,裡面含有 IP位址,城市資訊,但是城市是英文的;可惜啊;
2.根據之前獲得的IP位址資訊,建構新的URL,向另外的IP資料庫網站送出請求,傳回JSON格式的資料資訊 并解析JSON資料,裡面含有 IP位址,中文城市資訊,終于獲得中文城市資訊了
該網站傳回的中文字元是UNICODE編碼的哦,這個得注意哦;
3. 查找天氣預報對應城市的city id
摘取全國幾百個城市ID資訊,并要注意儲存成UTF-8格式哦,這個也很關鍵了,雖然之前網站傳回城市中文資訊是UNICODE格式的,但是結果libjansson解析後,傳回的城市資訊編碼是UTF-8編碼;
這樣就可以成功的擷取城市ID了;
city_buffer=杭州市
look_city_id ...city_buffer=杭州市
0xe6 0x9d 0xad 0xe5 0xb7 0x9e 0xe5 0xb8 0x82
look_city_id ...city_str_buff=杭州
k=1550 101210101=杭州 city_id_buffer=101210101
4. 根據中國城市天氣網提供的API接口(需要申請哦)
http://smart.weather.com.cn/wzfw/smart/weatherapi.shtml
通過之前擷取的城市ID,建構需要擷取城市天氣(1 2 7天 15天)的相關資訊的URL,傳回JSON格式的資料資訊 并解析JSON資料
這樣就可以獲得天氣資訊了,可以通過GUI顯示出來了。什麼溫度啊 濕度啊 注意事項了全部有了;
這就是這個功能的解決思路了。
這樣就可以把它顯示在你的相關嵌入式終端上了,這邊是C語言開發的,需要4個LIB ,libcurl.a libz.a librt.a libjansson.a