[Windows Phone] 讀取國家森林遊樂區資料

  • 2684
  • 0
  • 2013-11-09

在台灣有許多的開放平臺,可以作為 App 開發的資料來源,像是台北市政府資料開放平台、台中市資料開放平臺、行政院農委會資料開放平臺等,本文嘗試以行政院農委會資料開放平臺當中國家森林遊樂區資訊撰寫 App。

 

說明

在台灣有許多的開放平臺,可以作為 App 開發的資料來源,像是台北市政府資料開放平台、台中市資料開放平臺、行政院農委會資料開放平臺等,本文嘗試以行政院農委會資料開放平臺當中國家森林遊樂區資訊撰寫 App。

行政院農委會資料開放平臺當中國家森林遊樂區資訊網址 :

http://data.coa.gov.tw/od/query;jsessionid=B48724D80431FB6D273B8DA4FB7BB3B9?_m=detail&oid=8F727810-4648-4A2B-958A-3E6BCD315876&tagPage=hotPage&currentPage=1

資料介接 :

http://data.coa.gov.tw/od/data/api/004110/?$format=json

介接說明文件 :

http://data.coa.gov.tw/od/query?_m=file&oid=6BB2D03C-79BC-4A99-A354-E467E96C9EF2

 

步驟

1. 開啟 Visual Studio,新增專案

image

 

2. 選擇 Windows Phone 資料繫結應用程式

SNAGHTMLef537b9

 

3. 目標 Windows Phone OS 版本選擇 Windows Phone OS 7.1

SNAGHTMLef70f19

 

4. 在專案上,按滑鼠右鍵,選擇管理 NuGet 套件

image

 

5. 安裝 Json.NET

SNAGHTMLf004725

 

6. 開啟 MainViewModel.cs

image

 

7. using 以下 namespace

 


using System.Net;
using System.IO;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;

 

image

 

8. 將 LoadData() 中紅框處的程式碼,取代為

 


            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://data.coa.gov.tw/od/data/api/004110/?$format=json");
            httpWebRequest.BeginGetResponse(new AsyncCallback(GetHttpDocumentCallback), httpWebRequest);

 

image

 

9. 加入 GetHttpDocumentCallback 方法

        private void GetHttpDocumentCallback(IAsyncResult iAsyncResult)
        {
            HttpWebRequest httpWebRequest = (HttpWebRequest)iAsyncResult.AsyncState;
            HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(iAsyncResult);
            using (StreamReader responseStream = new StreamReader(httpWebResponse.GetResponseStream()))
            {
                string stream = responseStream.ReadToEnd();
                if (string.IsNullOrEmpty(stream))
                {
                    return;
                }

                JArray jArray = JsonConvert.DeserializeObject<JArray>(stream);                
                foreach (JObject jObject in jArray)
                {
                    Deployment.Current.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        this.Items.Add(new ItemViewModel() { LineOne = (string)jObject["遊樂區名稱"], LineTwo = (string)jObject["開放時間"], LineThree = (string)jObject["園區描述"] });
                    }));
                }
            }
        }

 

image

 

10. 開啟 MainPage.xaml

image

 

11. 將 PageTitle 的 Text 屬性內容取代為森林遊樂區

image

 

12. 執行程式,確認程式可正確運作

SNAGHTMLf431467SNAGHTMLf435652

 

範例下載

 

補充一、套件管理員主控台

在加入 Json.NET 的部分,也可以透過指令的方式,參考以下連結

http://www.nuget.org/packages/Newtonsoft.Json

 

開啟 [工具] / [程式庫套件管理員] / [套件管理員主控台]。

image

 

輸入 Install-Package Newtonsoft.Json 按 Enter 鍵。

image

 

補充二、處理使用 NuGet 安裝 Json.NET 出現錯誤

當您透過 NuGet 安裝 Json.NET 時,出現如下圖錯誤訊息,該如何處理?

 

由於 NuGet 沒有更新到新版,導入安裝部分套件時發生錯誤,我們可以透過更新 NuGet 至最新版來解決此問題。參考以下步驟:

1. 在 Visual Studio 2012,選擇 [工具],點選 [擴充功能和更新],在左邊切換至 [更新] / [擴充功能和更新],在 [NuGet Package Manager] 按 [更新]。

 

2. 更新過程出現如下授權畫面,請按 [安裝]。

 

3. 安裝與更新完成,按 [關閉]。

 

4. 重新開啟 Microsoft Visual Studio 讓變更生效,重新開啟後,再試著使用 NuGet 更新 Json.NET 看看。