HttpClient笔记与踩过的坑

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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://106.14.205.120:80/api_v1/DoorApi/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://106.14.205.120:80/api_v1/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就会有报错

技术分享

 

 这个坑要小心一点 

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

以上是关于HttpClient笔记与踩过的坑的主要内容,如果未能解决你的问题,请参考以下文章

数据库的操作与踩过的坑

多线程和异步编程示例和实践-踩过的坑

Swift5 踩过的坑和奇怪的API笔记

Swift5 踩过的坑和奇怪的API笔记

Swift5 踩过的坑和奇怪的API笔记

Activity生命周期,学习笔记(踩过的坑)