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就会有报错
这个坑要小心一点
好了今天就是我的进步了 总结到这里了