HttpClient笔记与踩过的坑

时间:2021-12-24 21:37:12

本来有个指纹采集功能做了个winFrom小程序 在本地测试都还能行,后来快上线的时候发现 客户用的阿里云数据库, 不对外公布 ,然后发现本地采集的数据没办法上传到数据库怎么办呢?

然后曲线救国,用webapi的方式在通过把数据上传到网站对数据库进行读写。  哈哈哈!!

然后之前用的都是HttpWebRequest ,不过这个在这里就不适用了,这里一个小小的get请求就写太多代码了,发现httpClient代码更少就偷个懒来学习下怎么使用httpClient

关于HttpWebRequest 我之前有讲过想了解的,看我的之前的博客http://www.cnblogs.com/dzhengyang/p/7099764.html

关于httpClient可以进行同步,也可以进行异步,楼主就是这里被坑了~~~

开始学习吧 上代码

首先是同步请求

         /// <summary>
/// 获取门禁用户
/// </summary>
/// <returns></returns>
public static string DoorAllList()
{
var result = "";
string url = "http://www.baidu.com/Api/GetDoorUserList";
//创建HttpClientHandler的AutomaticDecompression
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
//创建一个httpClient;
using (var client = new HttpClient(handler))
{
//同步请求
var response = client.GetAsync(url);
//在这里会等待response返回。
var ret = response.Result;
//最终等待返回结果
result = ret.Content.ReadAsStringAsync().Result;
}
return result;
}

同步没什么说的比较简单

异步请求

         /// <summary>
/// 异步请求
/// </summary>
public static async void DoorAll()
{
var result = "";
string url = "http://baidu/api/DoorApi/GetDoorUserList";
//创建HttpClientHandler的AutomaticDecompression
var handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip };
//创建一个httpClient;
using (var client = new HttpClient(handler))
{
//异步请求
var response =await client.GetAsync(url);
//确保HTTP成功状态值
response.EnsureSuccessStatusCode();
//返回结果
await response.Content.ReadAsStringAsync();
}
}

异步请求的方法要加关键字 async 然后在等待结果的时候要用关键字 await  如果不用关键字await就会有报错

HttpClient笔记与踩过的坑

这个坑要小心一点

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