通過天氣API,我們可以根據以下方式收集城市資料:城市名稱、城市ID、地理座標甚至郵遞區號。該API的優點是免費且易於使用。但是該API有一個限制:使用次數或者流量不能超過60次/分鐘或50k/天,如果違反該規定,您的帳戶將被封鎖。
在本教材中,我們選擇根據城市ID調用API。每個城市都有一個ID,詳細資訊請參見 http://bulk.openweathermap.org/sample/city.list.json.gz。副檔名.json 用於在瀏覽器和伺服器之間進行交換資料。只有當資料是文本格式時才能進行通訊。
我們已經將資料用作WebClient類—這使得文件下載更加輕鬆。在我們的例子中,構造函數WebClient用於初始化一個新的範例:
WebClient client = new WebClient();
我們需要將資料編碼為UTF8格式,這意味著系統用8位元塊來表示字元,具體指令如下:client.Encoding = System.Text.Encoding.UTF8
如果網路連線出現問題時,程式會自動顯示以下訊息 “Internet Connection failed – “throw new WeatherDataServiceException” 。通過throw我們可以建立一個異常。
在C#中,我們可以使用try 和 catch來解決部分代碼無法成功的情況。
藉由語音合成API,如果使用者詢問天氣情況,系統會發出以下聲音:“The weather in Boston is(波士頓的天氣是)…”。
當您使用語音合成API時,您需要一個可以快速處理的檔案—這就是我們需要使用伺服器的原因。對於BING API,我們需要授權記號,具體資訊請參閱https://api.cognitive.microsoft.com/sts/v1.0/issueToken.
該API的有效期為10分鐘。這是一個非常棒的計時器,可以計數到9,同時每9分鐘更新一次連線。
如下圖所示,您可以看到語音合成的最終結果是“Testing the app for Device Plus”。
總體來說,這是一個有趣的研究專案。該專案讓我了解到硬體和軟體之間好的同步配合,對於實現最佳性能是非常重要的。使用大量Visual Studio公用程式雖然使專案有點複雜,但最終結果是令人滿意的。
我認為這種專案可以透過多種方式進行開發和改進,以滿足每個使用者的需求。