C#怎么通过HttpWebRequest发送带有JSON Body的POST请求
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,本篇内容介绍了"C#怎么通过HttpWebRequest发送带有JSON Body的POST请求"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这
千家信息网最后更新 2024年11月19日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安全错误
数据库的锁怎样保障安全
如果解决网络安全性
金融征信大数据库
网络技术好做吗
抓好春节期间网络安全保障
情监控网络安全报告
网络安全自学之家
小海豚客户端授权的数据库不存在
移动应用服务器用什么数据库
辽宁云游时空网络技术有限公司
网络安全 会议讲话
国家网络安全宣传周百度文库
如何建立食品安全数据库
四川c语言软件开发哪家便宜
oralce数据库
政校企网络安全服务中心
七日杀a20进不去好友服务器
五周服务器
数据库修改number的长度
软件开发市场已经饱和了么
沈阳软件开发价钱
qq幻想 服务器
灵武市软件开发技术费用
江苏网络时间同步服务器虚拟主机
沙箱 软件开发
app软件开发百度百科
英雄联盟多少服务器
xampp可以删掉数据库吗
手游服务器管理员
软件开发适合学什么专业
网络安全法案例总结