本來有個指紋采集功能做了個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就會有報錯

這個坑要小心一點
好了今天就是我的進步了 總結到這里了
