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

打印 上一主题 下一主题

主题 927|帖子 927|积分 2781

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

内置了两种方法,Post和/Get
  1. /// <summary>
  2. /// 创建POST方式的HTTP请求--form-data
  3. /// </summary>
  4. /// <param name="url"></param>
  5. /// <param name="dic"></param>
  6. /// <returns></returns>
  7. public static string PostJsonData(string url, Dictionary<string, string> dic, Dictionary<string, string> headers = null)
  8. {
  9.     string str = "";
  10.     try
  11.     {
  12.         HttpClient client = new HttpClient();
  13.         var postContent = new MultipartFormDataContent();
  14.         string boundary = string.Format("--{0}", DateTime.Now.Ticks.ToString("x"));
  15.         postContent.Headers.Add("ContentType", $"multipart/form-data, boundary={boundary}");
  16.         // 添加额外的头部信息
  17.         if (headers != null)
  18.         {
  19.             foreach (var header in headers)
  20.             {
  21.                 client.DefaultRequestHeaders.Add(header.Key, header.Value);
  22.             }
  23.         }
  24.         foreach (var key in dic.Keys)
  25.         {
  26.             postContent.Add(new StringContent(dic[key].ToString()), key);
  27.         }
  28.         HttpResponseMessage response = client.PostAsync(url, postContent).Result;
  29.         str = response.Content.ReadAsStringAsync().Result;
  30.     }
  31.     catch (Exception ex)
  32.     {
  33.         return ("PostJsonData:" + ex.ToString());
  34.     }
  35.     return str;
  36. }
  37. /// <summary>
  38. /// 创建Get方式的HTTP请求--form-data
  39. /// </summary>
  40. /// <param name="url"></param>
  41. /// <param name="dic"></param>
  42. /// <returns></returns>
  43. public static string GetJsonData(string url, Dictionary<string, string> parameters = null, Dictionary<string, string> headers = null)
  44. {
  45.     string str = "";
  46.     try
  47.     {
  48.         HttpClient client = new HttpClient();
  49.         // 添加额外的头部信息
  50.         if (headers != null)
  51.         {
  52.             foreach (var header in headers)
  53.             {
  54.                 client.DefaultRequestHeaders.Add(header.Key, header.Value);
  55.             }
  56.         }
  57.         // 构建查询参数
  58.         if (parameters != null)
  59.         {
  60.             var queryBuilder = new StringBuilder("?");
  61.             foreach (var param in parameters)
  62.             {
  63.                 queryBuilder.Append($"{param.Key}={Uri.EscapeDataString(param.Value)}&");
  64.             }
  65.             url += queryBuilder.ToString().TrimEnd('&');
  66.         }
  67.         HttpResponseMessage response = client.GetAsync(url).Result;
  68.         str = response.Content.ReadAsStringAsync().Result;
  69.     }
  70.     catch (Exception ex)
  71.     {
  72.         return ("GetJsonData:" + ex.ToString());
  73.     }
  74.     return str;
  75. }
复制代码
使用

在使用时,我们只需要转达请求地址和参数,表头可以不传
  1.         public AssetsQueryConfig GetAssetsQueryList(GzParam List)
  2.         {
  3.             //请求地址
  4.             string url = "111111111111111"+ "/asset/getAssetsQueryList";
  5.             //数据
  6.             Dictionary<string, string> param = new Dictionary<string, string>();
  7.             param.Add("OrgNum", List.OrgNum);
  8.             param.Add("SiteNum", List.SiteNum);
  9.             param.Add("AssetNum", List.AssetNum);
  10.             param.Add("SerialNum", List.SerialNum);
  11.             //表头
  12.             Dictionary<string, string> headers = new Dictionary<string, string>();
  13.             headers.Add("authorization", dict.ToString());
  14.             string responseJson = HttpHelper.GetJsonData(url, param, headers);
  15.             //解析获取的值
  16.                         dynamic responseObject = JsonConvert.DeserializeObject(responseJson);
  17.         }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表