2021-04-15

C# WebApi 调用

//HttpClient调用帮助类
 public static class HttpRequestHelper {  #region Get调用  /// <summary>  /// 使用get方法异步请求  /// </summary>  /// <param name="url">目标链接</param>  /// <returns>返回的字符串</returns>  private async static Task<HttpResponseMessage> GetResponseAsync(string url, Dictionary<string, string> header = null, Dictionary<string, string> parame = null)  {   try   {    HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });    StringBuilder builder = new StringBuilder();    builder.Append(url);    if (header != null)    {     client.DefaultRequestHeaders.Clear();     foreach (var item in header)     {      client.DefaultRequestHeaders.Add(item.Key, item.Value);     }    }    if (parame != null && parame.Count > 0)    {     builder.Append("?");     int i = 0;     foreach (var item in parame)     {      if (i > 0)       builder.Append("&");      builder.AppendFormat("{0}={1}", item.Key, item.Value);      i++;     }    }    HttpResponseMessage response = await client.GetAsync(builder.ToString());    response.EnsureSuccessStatusCode();//用来抛异常的    return response;   }   catch (Exception e)   {    //在webapi中要想抛出异常必须这样抛出,否则之抛出一个默认500的异常    var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError)    {     Content = new StringContent(e.ToString()),     ReasonPhrase = "error"    };    throw new HttpResponseException(resp);   }  }  public static async Task<string> GetStringAsync(string url, Dictionary<string, string> header = null, Dictionary<string, string> parame = null)  {   var response = await GetResponseAsync(url, header, parame);   return await response.Content.ReadAsStringAsync();  }  /// <summary>  /// 使用Get返回异步请求返回List集合  /// </summary>  /// <typeparam name="T"></typeparam>   /// <returns></returns>  public static async Task<List<T>> GetListAsync<T>(string url, Dictionary<string, string> header = null, Dictionary<string, string> parame = null)  {   var response = await GetResponseAsync(url, header, parame);   return response.Content.ReadAsAsync<List<T>>().Result;  }  

No comments:

Post a Comment