zoukankan      html  css  js  c++  java
  • .NetCore中HttpClient简单封装

    HttpClient是经常用到的。我们做一个简单的封装类

    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.Net.Http;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Threading.Tasks;
    public class HttpClientHelper
        {
            /// <summary>
            /// application/x-www-form-urlencoded
            /// </summary>
            /// <typeparam name="TBody"></typeparam>
            /// <param name="_client"></param>
            /// <param name="uri"></param>
            /// <param name="requestData"></param>
            /// <returns></returns>
            public static async Task<TBody> PostFormAsync<TBody>(HttpClient _client, string uri, Dictionary<string, string> param)
            {
    
                try
                {
                    using (var multipartFormDataContent = new FormUrlEncodedContent(param))
                    {
                        Console.WriteLine(JsonConvert.SerializeObject(param));
                        var result = await _client.PostAsync(uri, multipartFormDataContent).Result.Content.ReadAsStringAsync();
                        var resp = JsonConvert.DeserializeObject<TBody>(result);
                        return resp;
                    }
                }
                catch (Exception ex)
                {
    
                    throw ex;
    
                }
    
            }
    
    
    
            /// <summary>
            /// application/json
            /// </summary>
            /// <typeparam name="TBody"></typeparam>
            /// <param name="_client"></param>
            /// <param name="uri"></param>
            /// <param name="requestData"></param>
            /// <returns></returns>
            public static async Task<TBody> PostAsync<TBody>(HttpClient _client, string uri, dynamic requestData)
                => await SendAsync<TBody>(_client, "application/json", HttpMethod.Post, uri, requestData);
    
            public static async Task<TBody> GetAsync<TBody>(HttpClient _client, string uri, Dictionary<string, string> headerDict = null)
                => await SendAsync<TBody>(_client, "application/json", HttpMethod.Get, uri, null, headerDict);
    
            public static async Task<TBody> SendAsync<TBody>(HttpClient _client, string ContentType, HttpMethod method, string uri, dynamic requestData, Dictionary<string, string> headerDict=null)
            {
                string content = "";
                if (!string.IsNullOrEmpty(requestData))
                { 
                    content = JsonConvert.SerializeObject(requestData, new JsonSerializerSettings
                    {
                        NullValueHandling = NullValueHandling.Ignore
                    });
                }
                try
                {
                    using (HttpRequestMessage message = new HttpRequestMessage(method, uri))
                    {
                        if(headerDict != null)
                        {
                            foreach(var d in headerDict)
                            {
                                message.Headers.Add(d.Key, d.Value);
                            } 
                        }
                        using (HttpContent httpContent = new StringContent(content, Encoding.UTF8))
                        {
                            httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse(ContentType);
                            message.Content = httpContent;
    
                            var httpResponseMessage = await _client.SendAsync(message);
    
                            string json = await httpResponseMessage.Content.ReadAsStringAsync();
                            var resp = JsonConvert.DeserializeObject<TBody>(json);
    
                            return resp;
    
                        }
                    }
                }
                catch (Exception ex)
                {
    
                    throw;
    
                }
            } 
        }

    调用方法如下:

     var client = _clientFactory.CreateClient();
    
                string TenantAPI = "http://xxxx"; 
    
                var httpRet = await HttpClientHelper.GetAsync<Result<TenantInfoResp>>(client, TenantAPI);
  • 相关阅读:
    第三次博客园作业
    centos7+jdk1.8+tomcat8 配置https
    输入30个数存入数组a,求出数的每个位数的平方和存入数组b,从小到大排列后输出(C语言)
    50个[100,300]的随机数,要求用二分法查找从键盘录入的关键数字。找到回复位置,找不到回复不存在(C语言)
    产生20个随机数,在[200,400]内,其中能被5整除的存入数组array2,要求输出array2中的平均值(C语言)
    最小生成树
    PTA路径判断
    PTA构造哈夫曼树
    图的其中两种表示方式
    中序遍历树并判断是否为二叉搜索树
  • 原文地址:https://www.cnblogs.com/puzi0315/p/15592298.html
Copyright © 2011-2022 走看看