IHttpClientFactory调用接口
public class Monitor { /// <summary> /// POST请求 /// </summary> /// <param name="url"></param> /// <param name="obj"></param> /// <param name="contentType">application/xml、application/json、application/text、application/x-www-form-urlencoded</param> /// <param name="charset"></param> /// <returns></returns> public string HttpPostAsync(string url, object obj, string contentType = "", string charset = "UTF-8") { string result = ""; var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider(); IHttpClientFactory _httpClientFactory = serviceProvider.GetService<IHttpClientFactory>(); var _httpClient = _httpClientFactory.CreateClient("CTCCMonitor"); _httpClient.DefaultRequestHeaders.Accept.Clear(); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType)); string content = JsonConvert.SerializeObject(obj); var httpContent = new StringContent(content, Encoding.UTF8, contentType); var response = _httpClient.PostAsync(url, httpContent).Result; if (response.IsSuccessStatusCode) { Task<string> t = response.Content.ReadAsStringAsync(); if (t != null) { result = t.Result; } } return result; } /// <summary> /// GET请求 /// </summary> /// <param name="url"></param> /// <returns></returns> public string HttpGetAsync(string url) { string result = ""; var serviceProvider = new ServiceCollection().AddHttpClient().BuildServiceProvider(); IHttpClientFactory _httpClientFactory = serviceProvider.GetService<IHttpClientFactory>(); var _httpClient = _httpClientFactory.CreateClient("CTCCMonitor"); var response = _httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { Task<string> t = response.Content.ReadAsStringAsync(); if (t != null) { result = t.Result; } } return result; } /// <summary> /// 拼接请求参数 /// </summary> /// <param name="method">请求方式GET/POST</param> /// <param name="dic"></param> /// <returns></returns> public string GetPara(string method, Dictionary<string, string> dic) { StringBuilder strPara = new StringBuilder(); method = method.ToUpper(); switch (method) { case "POST": foreach (var item in dic) { if (!string.IsNullOrEmpty(strPara.ToString())) { strPara.Append("&"); } strPara.Append(item.Key).Append("=").Append(item.Value); } break; case "GET": foreach (var item in dic) { if (string.IsNullOrEmpty(strPara.ToString())) { strPara.Append("?"); } else { strPara.Append("&"); } strPara.Append(item.Key).Append("=").Append(item.Value); } break; } return strPara.ToString(); } }
string url ="";//请求地址
Monitor monitor = new Monitor();
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("method", method);
dic.Add("user_id", user_id);
dic.Add("passWord", passwordEnc);
dic.Add("sign", sign);
//Get请求
string requestUrl = url + monitor.GetPara("get", dic);
apiResult = monitor.HttpGetAsync(requestUrl);
//Post请求
string postData =monitor.GetPara("post", dic);
apiResult = monitor.HttpPostAsync(url, postData, "application/x-www-form-urlencoded");