.Net 封装Get/post方式的HTTP请求--form-data

在使用.Net时,我们有时会对一些外部连接中的数据进行处理,那么封装一个请求的方法就很有必要了

封装HttpHelper

内置了两种方法,Post和/Get

/// <summary>
/// 创建POST方式的HTTP请求--form-data
/// </summary>
/// <param name="url"></param>
/// <param name="dic"></param>
/// <returns></returns>
public static string PostJsonData(string url, Dictionary<string, string> dic, Dictionary<string, string> headers = null)
{
    string str = "";
    try
    {
        HttpClient client = new HttpClient();
        var postContent = new MultipartFormDataContent();
        string boundary = string.Format("--{0}", DateTime.Now.Ticks.ToString("x"));
        postContent.Headers.Add("ContentType", $"multipart/form-data, boundary={boundary}");

        // 添加额外的头部信息
        if (headers != null)
        {
            foreach (var header in headers)
            {
                client.DefaultRequestHeaders.Add(header.Key, header.Value);
            }
        }

        foreach (var key in dic.Keys)
        {
            postContent.Add(new StringContent(dic[key].ToString()), key);
        }

        HttpResponseMessage response = client.PostAsync(url, postContent).Result;
        str = response.Content.ReadAsStringAsync().Result;
    }
    catch (Exception ex)
    {
        return ("PostJsonData:" + ex.ToString());
    }
    return str;
}
/// <summary>
/// 创建Get方式的HTTP请求--form-data
/// </summary>
/// <param name="url"></param>
/// <param name="dic"></param>
/// <returns></returns>
public static string GetJsonData(string url, Dictionary<string, string> parameters = null, Dictionary<string, string> headers = null)
{
    string str = "";
    try
    {
        HttpClient client = new HttpClient();

        // 添加额外的头部信息
        if (headers != null)
        {
            foreach (var header in headers)
            {
                client.DefaultRequestHeaders.Add(header.Key, header.Value);
            }
        }

        // 构建查询参数
        if (parameters != null)
        {
            var queryBuilder = new StringBuilder("?");
            foreach (var param in parameters)
            {
                queryBuilder.Append($"{param.Key}={Uri.EscapeDataString(param.Value)}&");
            }
            url += queryBuilder.ToString().TrimEnd('&');
        }

        HttpResponseMessage response = client.GetAsync(url).Result;
        str = response.Content.ReadAsStringAsync().Result;
    }
    catch (Exception ex)
    {
        return ("GetJsonData:" + ex.ToString());
    }
    return str;
}

使用

在使用时,我们只需要传递请求地址和参数,表头可以不传

        public AssetsQueryConfig GetAssetsQueryList(GzParam List)
        {
            //请求地址
            string url = "111111111111111"+ "/asset/getAssetsQueryList";

            //数据
            Dictionary<string, string> param = new Dictionary<string, string>();
            param.Add("OrgNum", List.OrgNum);
            param.Add("SiteNum", List.SiteNum);
            param.Add("AssetNum", List.AssetNum);
            param.Add("SerialNum", List.SerialNum);

            //表头
            Dictionary<string, string> headers = new Dictionary<string, string>();
            headers.Add("authorization", dict.ToString());

            string responseJson = HttpHelper.GetJsonData(url, param, headers);
            //解析获取的值
 			dynamic responseObject = JsonConvert.DeserializeObject(responseJson);
        }

相关推荐

  1. .Net 封装Get/post方式HTTP请求--form-data

    2024-06-07 20:44:04       32 阅读
  2. 封装promise请求方式

    2024-06-07 20:44:04       48 阅读
  3. 四种常见Http请求方式

    2024-06-07 20:44:04       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 20:44:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 20:44:04       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 20:44:04       82 阅读
  4. Python语言-面向对象

    2024-06-07 20:44:04       91 阅读

热门阅读

  1. mysql5.7血泪史

    2024-06-07 20:44:04       31 阅读
  2. 蓝桥杯嵌入式学习

    2024-06-07 20:44:04       26 阅读
  3. 力扣2379.得到k个黑块的最少涂色次数

    2024-06-07 20:44:04       27 阅读
  4. Linux安装Nginx、配置SSL

    2024-06-07 20:44:04       21 阅读
  5. 模式识别选择题

    2024-06-07 20:44:04       25 阅读
  6. 【MATLAB高级编程】入门篇 | 向量化编程

    2024-06-07 20:44:04       24 阅读
  7. 关于学习flutter笔记

    2024-06-07 20:44:04       33 阅读