zoukankan      html  css  js  c++  java
  • 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");

  • 相关阅读:
    排序比较与总结
    Oracle误删恢复
    DSP TMS320C6000基础学习(4)—— cmd文件分析
    NYOJ 488 素数环
    Oracle常用语句记录
    Cocoa编程开发者手册
    Unity3d物体模型(实现旋转缩放平移自动旋转)
    django 创建一个通用视图
    ContentResolver + SqliteOpenHelper + ContentProvider 理解
    线性回归,logistic回归和一般回归
  • 原文地址:https://www.cnblogs.com/nayilvyangguang/p/12186067.html
Copyright © 2011-2022 走看看