.net core 使用HttpClient async异步获取数据

​ ​ 最近在做wpf的项目,需要请求web api获取数据做交互。为了提升用户体验,异步交互就很有必要了。其中用到了HttpClient异步获取数据,总结了一下HttpClient的使用方法。

​ ​ 我们交互都是使用json数据,所以代码逻辑直接处理json方便使用。

  1. Get方法
public static async Task<TResult> Get<TResult>(string url)
        {
            var result = default(TResult);
            using (var httpClient = new HttpClient())
            {
                var response = await httpClient.GetAsync(url);
                response.EnsureSuccessStatusCode();
                result = JsonConvert.DeserializeObject<TResult>(await response.Content.ReadAsStringAsync());
            }
            return result;
        }
  1. Post方法
public static async Task<TResult> Post<TSource, TResult>(string url, TSource data)
        {
            TResult result = default(TResult);
            using (var httpClient = new HttpClient())
            {
                var message = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
                var response = await httpClient.PostAsync(url, message);
                response.EnsureSuccessStatusCode();
                result = JsonConvert.DeserializeObject<TResult>(await response.Content.ReadAsStringAsync());
            }
            return result;
        }

​ ​ 上面示例中为了方便使用,使用了泛型参数,不需要的话可以取消泛型传参。

使用方法:

Client.Post<object, ResultModel>(url, model).ContinueWith((r) => {
        var data = r;
 });