天天看點

如何根據IP自動擷取當地的天氣預報資訊

      天氣預報資訊用途非常廣泛。手機 ,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