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就会有报错

 

 这个坑要小心一点 

 好了今天就是我的进步了 总结到这里了  

posted @ 2017-08-13 15:24  路明非i  阅读(1788)  评论(0编辑  收藏  举报