一般我們在開發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的速度自然會加快唷!!
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 ! 感謝。