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");

浙公网安备 33010602011771号