C# Windows Store App 、Windows Phone 開發,自定義類別(Class) 簡化擷取網頁資料功能,使用Get & Post 。

  • 1090
  • 0
  • C#
  • 2015-06-10

一般我們在開發Windows Store App時,很常需要透過擷取網頁資料來製作APP,因次需要使用程式碼來實作擷取網頁資料的功能,一般的查詢網頁大多數都使使用Get的方式,但是大部分的網頁若有注重安全隱私的功能時,就會使用Post的方式來讓使用者選擇資料或登入,每產一隻APP就必須寫一次擷取的程式碼,不如我們就寫個自定義類別,這樣日後開發上就相對省時了!

本篇文章金引導您寫自定義類別(Class) 簡化互動網頁的資料擷取,使用Get & Post 。

一般我們在開發Windows Store App、Windows Phone App時,很常需要透過擷取網頁資料來製作APP,因次需要使用程式碼來實作擷取網頁資料的功能,一般的查詢網頁大多數都使使用Get的方式,但是大部分的網頁若有注重安全隱私的功能時,就會使用Post的方式來讓使用者選擇資料或登入,每產一隻APP就必須寫一次擷取的程式碼,不如我們就寫個自定義類別,這樣日後開發上就相對省時了!

 

本篇文章金引導您寫自定義類別(Class) 簡化互動網頁的資料擷取,使用Get & Post 。

 

首先如題所示我們要先新增一個自定義類別,叫做Extensions好了,有點延伸功能的意思(至少我是這麼認為 ㄏㄏ)

 

然後鍵入程式碼

 

   1:  public static class Extensions
   2:  {
   3:      //使用Post資料到網頁,並回傳結果,參數為 1. 網址 2.要Post的資料列
   4:      public async static Task<string> DownloadStringTask_Post(string url,List<KeyValuePair<string, string>> DataList)
   5:      {
   6:          var httpClient = new HttpClient();
   7:          var response = await httpClient.PostAsync(url, new FormUrlEncodedContent(DataList));
   8:          var responseString = await response.Content.ReadAsStringAsync();
   9:   
  10:          try {
  11:              return responseString;
  12:          }
  13:          catch (Exception ex) {
  14:              Debug.WriteLine("Post " + url+"\n"+ex.Message.ToString());
  15:              return null;
  16:          }
  17:   
  18:      }
  19:      //使用Get方式傳送資料到網頁,並回傳結果,參數為 1. 網址 2.要Post的資料列
  20:      public async static Task<string> DownloadStringTask_Get(string url, List<KeyValuePair<string, string>> DataList)
  21:      {
  22:          url += "?";
  23:          for (int i = 0; i < DataList.Count;i++ ) {
  24:              url += DataList[i].Key + "=" + DataList[i].Value;
  25:              if (i != DataList.Count - 1) {
  26:                  url += "&";
  27:              }
  28:          }
  29:          HttpClient http = new System.Net.Http.HttpClient();
  30:          HttpResponseMessage response = await http.GetAsync(url);
  31:          return await response.Content.ReadAsStringAsync();
  32:      }
  33:  }

 

打好了之後要怎麼使用呢?!

接著在主程式中只要這樣子使用就可以把整個網頁擷取回來囉!!

 

   1:  //Post用法
   2:  var data = new List<KeyValuePair<string, string>>
   3:  {
   4:      new KeyValuePair<string, string>("account", MyAccount),
   5:      new KeyValuePair<string, string>("password", Password)
   6:  };
   7:  string MyUrl="http://google.com";//網址部分僅當作範例,Post資料過去不會得到什麼
   8:  string json = await Extensions.DownloadStringTask_Post(MyUrl, data);
   9:   
  10:  //Get用法
  11:  var data = new List<KeyValuePair<string, string>>
  12:  {
  13:      new KeyValuePair<string, string>("ID", MyID),
  14:      new KeyValuePair<string, string>("Type", 1)
  15:  };
  16:  string MyUrl="http://google.com";//網址部分僅當作範例,Get資料過去不會得到什麼
  17:  string json = await Extensions.DownloadStringTask_Get(MyUrl, data);

 

如此一來我們就簡化了Post和Get網頁資料的流程了,以後也只要引入這個自定義類別,寫APP的速度自然會加快唷!!

 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 !  感謝。

SUKI

HOLIESTAR