HttpClient筆記與踩過的坑


  本來有個指紋采集功能做了個winFrom小程序 在本地測試都還能行,后來快上線的時候發現 客戶用的阿里雲數據庫, 不對外公布 ,然后發現本地采集的數據沒辦法上傳到數據庫怎么辦呢?  

  然后曲線救國,用webapi的方式在通過把數據上傳到網站對數據庫進行讀寫。  哈哈哈!!

  然后之前用的都是HttpWebRequest ,不過這個在這里就不適用了,這里一個小小的get請求就寫太多代碼了,發現httpClient代碼更少就偷個懶來學習下怎么使用httpClient

 

 關於HttpWebRequest 我之前有講過想了解的,看我的之前的博客http://www.cnblogs.com/dzhengyang/p/7099764.html

 關於httpClient可以進行同步,也可以進行異步,樓主就是這里被坑了~~~

 開始學習吧 上代碼

 

 首先是同步請求

 

 1         /// <summary>
 2         /// 獲取門禁用戶
 3         /// </summary>
 4         /// <returns></returns>
 5         public static string DoorAllList()
 6         {
 7             var result = "";
 8             string url = "http://www.baidu.com/Api/GetDoorUserList";
 9             //創建HttpClientHandler的AutomaticDecompression
10             var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
11             //創建一個httpClient;
12             using (var client = new HttpClient(handler))
13             {
14                 //同步請求
15                 var response = client.GetAsync(url);
16                 //在這里會等待response返回。
17                 var ret = response.Result;
18                 //最終等待返回結果
19                 result = ret.Content.ReadAsStringAsync().Result;
20             }
21             return result;
22         }

 

 同步沒什么說的比較簡單

 

 異步請求

 1         /// <summary>
 2         /// 異步請求
 3         /// </summary>
 4         public static async void DoorAll()
 5         {
 6             var result = "";
 7             string url = "http://baidu/api/DoorApi/GetDoorUserList";
 8             //創建HttpClientHandler的AutomaticDecompression
 9             var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
10             //創建一個httpClient;
11             using (var client = new HttpClient(handler))
12             {
13                 //異步請求
14                 var response =await client.GetAsync(url);
15                 //確保HTTP成功狀態值
16                 response.EnsureSuccessStatusCode();
17                 //返回結果
18                 await response.Content.ReadAsStringAsync();
19             }
20         }

異步請求的方法要加關鍵字 async 然后在等待結果的時候要用關鍵字 await  如果不用關鍵字await就會有報錯

 

 這個坑要小心一點 

 好了今天就是我的進步了 總結到這里了  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM