//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; } #endregion #region Post呼叫 /// <summary> /// 使用post方法異步請求 /// </summary> /// <param name="url">目標鏈接</param> /// <param name="json">發送的引數字串-json</param> /// <returns>回傳的字串</returns> public static async Task<string> PostAsync(string url, string json, Dictionary<string, string> header = null, bool Gzip = false) { HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false }); HttpContent content = new StringContent(json); content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); if (header != null) { client.DefaultRequestHeaders.Clear(); foreach (var item in header) { client.DefaultRequestHeaders.Add(item.Key, item.Value); } } HttpResponseMessage response = await client.PostAsync(url, content); response.EnsureSuccessStatusCode(); string responseBody; if (Gzip) { GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync()); responseBody = new StreamReader(inputStream).ReadToEnd(); } else { responseBody = await response.Content.ReadAsStringAsync(); } return responseBody; } #endregion //Put、Delete方式相同 }View Code
同一控制器包含多個API介面,通過指定路由實作,如圖:

效果:

相關文章鏈接 :
https://www.cnblogs.com/liuqiyun/p/9144816.html
相關文章鏈接 :
https://blog.csdn.net/u011127019/article/details/53021164
相關文章鏈接 : (簡單API介面創建教程)
https://www.jianshu.com/p/364f1842cae5
相關文章鏈接 :
https://www.cnblogs.com/guohu/p/12982850.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/276524.html
標籤:.NET技术
