C#怎么通过HttpWebRequest发送带有JSON Body的POST请求
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"C#怎么通过HttpWebRequest发送带有JSON Body的POST请求"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这
千家信息网最后更新 2026年11月01日C#怎么通过HttpWebRequest发送带有JSON Body的POST请求原来的处理方式
新的方式
本篇内容介绍了"C#怎么通过HttpWebRequest发送带有JSON Body的POST请求"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
原来的处理方式
新的方式
原来的处理方式
通过 GetRequestStream 来获取请求流,后把需要发送的 Json 数据写入到流中
private T PostDataViaHttpWebRequest(string baseUrl, IReadOnlyDictionary headers, IReadOnlyDictionary urlParas, string requestBody=null) { var resuleJson = string.Empty; try { var apiUrl = baseUrl; if (urlParas != null) urlParas.ForEach(p => { if (apiUrl.IndexOf("{" + p.Key + "}") > -1) { apiUrl = apiUrl.Replace("{" + p.Key + "}", p.Value); } else { apiUrl += string.Format("{0}{1}={2}", apiUrl.Contains("?") ? "&" : "?", p.Key, p.Value); } } ); var req = (HttpWebRequest)WebRequest.Create(apiUrl); req.Method = "POST"; req.ContentType = "application/json"; req.ContentLength = 0; if (!requestBody.IsNullOrEmpty()) { using (var postStream = req.GetRequestStream()) { var postData = Encoding.ASCII.GetBytes(requestBody); req.ContentLength = postData.Length; postStream.Write(postData, 0, postData.Length); } } if (headers != null) { if (headers.Keys.Any(p => p.ToLower() == "content-type")) req.ContentType = headers.SingleOrDefault(p => p.Key.ToLower() == "content-type").Value; if (headers.Keys.Any(p => p.ToLower() == "accept")) req.Accept = headers.SingleOrDefault(p => p.Key.ToLower() == "accept").Value; } var response = (HttpWebResponse)req.GetResponse(); using(Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"))) { resuleJson = reader.ReadToEnd(); } } } catch (Exception ex) { return default(T); } return JsonConvert.DeserializeObject (resuleJson); }
但是会发现,数据一直没有正常发送过去,而且代码还显得比较复杂
新的方式
这里修改一下写入 RequestStream 的方式,使用 StreamWriter 包装一下,然后直接写入需要发送的 Json 数据
private T PostDataViaHttpWebRequest(string baseUrl, IReadOnlyDictionary headers, IReadOnlyDictionary urlParas, string requestBody=null) { var resuleJson = string.Empty; try { var apiUrl = baseUrl; if (urlParas != null) urlParas.ForEach(p => { if (apiUrl.IndexOf("{" + p.Key + "}") > -1) { apiUrl = apiUrl.Replace("{" + p.Key + "}", p.Value); } else { apiUrl += string.Format("{0}{1}={2}", apiUrl.Contains("?") ? "&" : "?", p.Key, p.Value); } } ); var req = (HttpWebRequest)WebRequest.Create(apiUrl); req.Method = "POST"; req.ContentType = "application/json"; //Defalt if (!requestBody.IsNullOrEmpty()) { using (var postStream = new StreamWriter(req.GetRequestStream())) { postStream.Write(requestBody); } } if (headers != null) { if (headers.Keys.Any(p => p.ToLower() == "content-type")) req.ContentType = headers.SingleOrDefault(p => p.Key.ToLower() == "content-type").Value; if (headers.Keys.Any(p => p.ToLower() == "accept")) req.Accept = headers.SingleOrDefault(p => p.Key.ToLower() == "accept").Value; } var response = (HttpWebResponse)req.GetResponse(); using(Stream stream = response.GetResponseStream()) { using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("UTF-8"))) { resuleJson = reader.ReadToEnd(); } } } catch (Exception ex) { return default(T); } return JsonConvert.DeserializeObject (resuleJson); }
这样即可正确发送 Json 数据。
"C#怎么通过HttpWebRequest发送带有JSON Body的POST请求"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
方式
数据
C#
内容
更多
知识
UTF-8
处理
复杂
实用
学有所成
接下来
代码
困境
实际
情况
文章
案例
目录
编带
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司起名
互联网科技巨头监管
金诺互联网科技
互联网最新的科技有限公司
凡科互联网科技
腾讯科技 互联网女皇
无线互联网科技
润盈互联网科技
海南科技产业互联网平台
华服互联网科技官网
青海科技产业互联网发展
浙南科技城互联网大厦建设工程
内蒙古九一互联网科技
江苏互联网智能科技软件
富国互联网科技002692
互联网科技手抄报图片
互联网科技收购价值
现代互联网科技公司
互联网科技创业计划的风险分析
恒生互联网科技趋势
互联网 科技公司
互联网科技公司电话
科技互联网公司logo
昊天互联网科技有限公司
岳阳华臻互联网科技有限公司
互联网新科技动漫ppt素材
互联网科技创新的路径
互联网科技接地气
艺电能源互联网科技有限公司招聘
武汉亿视互联网科技有限公司