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; }
2021-04-15
C# WebApi 调用
//HttpClient调用帮助类
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment