使用HttpClient和WebRequest时POST一个对象的写法

.NET(C#)后台发送Get和Post请求的几种方法总结 NET (C#) 中,发送 HTTP GET 和 POST 请求可以通过多种方式实现,主要依赖于 .NET Framework 或 .NET Core/5+ 的版本。.NET中提供了多种方法来发送HTTP请求,每种方法都有其优缺点。选择哪种方法取决于具体需求和环境。 阅读详情
<p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">【一】步骤:</p><p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">1)将对象转化为Json字符串。</p><p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">2)将Json字符串编码为byte数组。</p><p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">3)设置传输对象(WebRequest或者HttpClient)的ContentType是"application/json"。</p><p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">4)设置传输对象的ContentLength=Byte数组的长度。</p><p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">5)开始传输</p><p style="margin: 10px auto; color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">6)获取JSON结果:</p>
<span style="color: rgb(73, 73, 73); font-size: 14px; line-height: 24.8889px; background-color: rgb(199, 203, 189);">【对于WebRequest而言】</span>
static void SendByWebRequesttoApi()
        {
            WebRequest req = WebRequest.Create("http://localhost:15203/api/ApiDefault");
            var stu = new Student { ID = 1, Name = "董玮" };
            string jsonString = JsonConvert.SerializeObject(stu);
            byte[] objectContent = Encoding.UTF8.GetBytes(jsonString);
            req.ContentLength = objectContent.Length;
            req.ContentType = "application/json";
            req.Method = "POST";
            using (var stream = req.GetRequestStream())
            {
                stream.Write(objectContent, 0, objectContent.Length);
                stream.Close();
            }


            var resp = req.GetResponse();
            using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
            {
                string s = sr.ReadToEnd();
                System.Console.WriteLine(s);
            }
        }

【对于HttpClient而言】

复制代码
static void SendByHttpClienttoApi()
        {
            var stu = new { ID = 1, Name = "董玮" };
            using (var client = new HttpClient())
            {
                string jsonString = JsonConvert.SerializeObject(stu);
                byte[] bytes = Encoding.UTF8.GetBytes(jsonString);
                using (StreamContent sc = new StreamContent(new MemoryStream(bytes)))
                {
                    sc.Headers.ContentLength = bytes.Length;
                    sc.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                    var result = client.PostAsync("http://localhost:15203/api/ApiDefault", sc).Result;
                    var objectResult = JsonConvert.DeserializeObject<Student>(result.Content.ReadAsStringAsync().Result);
                }

            }
        }
复制代码

另外注意,以上是针对WebApi(WebApi默认是JSON格式数据传输)。如果是MVC的模式,那么默认是表单形式传输。因此:

复制代码
 static void SendByWebRequesttoMVC()
        {
            WebRequest req = WebRequest.Create("http://localhost:15203/Default/DoGetStudent");
            var htmlFormPost = "ID=1&Name=董玮";
            byte[] objectContent = Encoding.UTF8.GetBytes(htmlFormPost);
            req.ContentLength = objectContent.Length;
            req.ContentType = "application/x-www-form-urlencoded";   //必须写!
            req.Method = "POST";
            using (var stream = req.GetRequestStream())
            {
                stream.Write(objectContent, 0, objectContent.Length);
                stream.Close();
            }

            var resp = req.GetResponse();
            using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
            {
                string s = sr.ReadToEnd();
                System.Console.WriteLine(s);
            }
        }
复制代码

在HttpClient中,把StreamContent改为FormUrlEncodedContent,传入一个Dictionary<string,string>对象即可:

复制代码
 static void SendByHttpClienttoMVC()
        {
            using (var client = new HttpClient())
            {
                FormUrlEncodedContent fc = new FormUrlEncodedContent(new Dictionary<string, string>() { { "ID", "1" }, { "Name", "董玮" } });
                var result = client.PostAsync("http://localhost:15203/Default/DoGetStudent", fc).Result;
                System.Console.WriteLine(result.Content.ReadAsStringAsync().Result);
            }
        }


www.cnblogs.com/ServiceboyNew



        
PowerShell新手必看:Invoke-WebRequest执行POST请求的正确姿势(附常见错误解析) 本文针对PowerShell新手,详细解析了使用Invoke-WebRequest执行POST请求的正确方法,重点对比了其与传统curl命令的思维差异。文章深入讲解了核心参数如-Method、-Body、-Headers的使用,并通过JSON提交、表单处理等实战场景,帮助读者掌握这一强大工具,避免常见错误,提升自动化脚本效率。 阅读详情

相关推荐

C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

get 和post 请求的写法

get请求 import requests base_url = 'http://httpbin.org' # 定义请求所需的参数,参数之间以英文逗号隔开 param_data = {'uname':'Test00001','pwd':'123456'} # 发送GET请求,格式如:requests.get(url,params) r = requests.get(base...

weixin_30527551的博客 4336

压电传感器信号放大难题?用运放设计电荷放大器的5个关键步骤

本文详细解析了压电传感器信号放大难题,并提供了用运放设计电荷放大器的5个关键步骤。从电压放大到电荷放大的范式转换,到运放选型、反馈网络设计、PCB布局及频响特性验证,帮助工程师解决工业自动化中的信号衰减问题,提升测量精度和稳定性。

weixin_27303545的博客 449

get、post、put三种写法

首先get请求写法: $ch = curl_init("http://www.medicool.cn") ;//请求地址 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回 curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFE

精哥哥 3170

保姆级避坑指南:在Ubuntu 18.04上搞定速腾Helios雷达驱动与fast-LIO2的完整配置流程

本文提供了一份详细的速腾Helios雷达与fast-LIO2在Ubuntu 18.04上的配置避坑指南,涵盖驱动安装、数据格式转换到建图全流程。特别针对常见编译错误和数据转换问题提供了解决方案,帮助开发者高效完成环境搭建与建图任务。

weixin_27252001的博客 113

stm32入门 点亮TFTLCD(NT35510驱动)

正点原子stm32f407探索者开发板屏幕使用正点原子4.3寸TFTLCDstm32f407开发使用标准库本文参考正点原子例程和NT35510的data sheet,尽量使用最少的代码点亮屏幕。

tangliang_cn的博客 1981

使用HttpWebRequest的POST取得网页内容(异步操作)

上次说了,如何通过post来取得网页内容。可是有一个问题出现了。当时用的方法是同步操作,如果我其中的一个IP或是在进行转化的过程中,出现了问题,哪么这个程序就会停下来,当然了,有的朋友可能会说,用try...catch也可以啊。因为我是循环取值,所以在catch里加一个continue就行了。可是以前没有搞过异步操作,所以想用这个机会搞一下。就看了一下。这一看不要紧,搞得我一头雾水。上网上去问,大

我本无名的专栏 7920

哈希拓展攻击CTF题做法

kali下载相关工具hash-ext-attack:hash拓展题目特征:2023楚慧杯upload_shell实验吧之让我进去:前言:具体怎么加密解密补位的原理我不懂,深入理解的部分我在文末挂了链接,以下也只是我做题的结论和通解,可能不准确(但是做题还挺准确),有错误欢迎指出:是在密码加密过程中引入的一个随机值,它与密码结合使用,目的是增加密码的复杂性和安全性。在密码加密中,常见的做法是将用户提供的密码进行哈希处理,然后存储哈希值而不是明文密码

2301_76690905的博客 2420

http post请求的两种写法

1、传参形式 public static String sendPostRequest(String url, String postStr) { String result = ""; try { HttpClient client = new HttpClient(); PostMethod method =...

你不勇敢 没人替你坚强 5052

AI 技术新手入门与实战指南

仅仅能对话还不够,实际应用中,我们往往需要让 AI 处理特定的业务数据。比如,从日志文件中提取错误码,或者将非结构化的用户反馈整理成 JSON 格式。这时候,自定义输入和严格的结果验证就显得尤为重要。假设我们需要让 AI 分析一段服务器日志,并只返回错误的级别和简述。请分析以下日志片段,提取所有 ERROR 级别的信息。要求输出格式为 JSON 列表,包含 'timestamp' 和 'message' 两个字段。不要输出任何多余的解释文字。日志内容: {

2600_94936330的博客 2681

《深入浅出强化学习原理入门》学习笔记(三)机器人找金币应用实例

《深入浅出强化学习原理入门》学习笔记(三)MDP应用实例

lxs3213196的博客 3187

HttpClient 和httpWebRequest 进行post 请求发送数据

/// <summary> /// 发送POST请求 /// </summary> /// <param name="url">请求URL</param> /// <param name="data">请求参数</param> /// &l...

andy5520的博客 1625

Sigrity System SI SerialLink模式进行SFP+协议仿真分析-PCB操作指导

Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1%UI RMS(平均值),即和标准值的偏差为1%UI。Random(Rj):随机抖动,该抖动用高斯概率分布来描述,通常是由热噪声和其它随机噪声引起的,默认为1%UI RMS(平均值),即和标准值的偏差为1%UI。Random(Rj):随机噪声,是由信号电压的随机波动引起的,默认为1mv RMS(平均值),即和标准值的偏差为1mv。

weixin_54787054的博客 508

第三节:总结.Net下后端的几种请求方式(WebClient、WebRequest、HttpClient)

一. 前言   前端调用有Form表单提交,ajax提交,ajax一般是用Jquery的简化写法,在这里不再过多介绍;后端调用大约有这些:WebCient、WebRequest、Httpclient、WebapiClient,重点探讨Get和Post请求,Put和Delete请求用较少。 下面排着介绍Get和Post的基本写法,最后再封装一下,便于调用。 PS:其中Post请求有两种,分别...

sinolover的专栏 1064

面向元数据的 SAP UI 中枢:namespace sap.ui.mdc 全景解析

如果把应用前端比作一条数据到交互的装配线,sap.ui.mdc 就是那条线的标准化工装:以 PropertyInfo 描述原料,以 Delegate 定义装配方法,以 p13n 与 VariantManagement 交付面向个体的最终产物;而 Condition Model、Operator 与 ValueHelp 则让输入与筛选的语义落地。与 OData V4 服务与 Fiori Elements 宏构件组合使用时,它能在保持一致体验的同时,给自由式开发者留下足够的可编排空间。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 238

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

HttpWebRequest VS WebRequest VS WebClient VS HttpClient

  WebRequest  Get #region WebRequest Get /// &lt;summary&gt; /// http://localhost:15325/api/ImitateHttp/WebRequestGet?Name0="NameLi" /// &lt;/summary&gt; /// &l...

狗剩的专栏 1368

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 之间的区别

HttpRequest,WebRequest,HttpWebRequest,WebClient,HttpClient 今天我们来聊一下他们之间的关系与区别。 HttpRequest 类 .NET Framework 2.0 使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。 命名空间:System.Web程序集:System.Web...

doi2746的博客 372

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HttpClient替换HttpWebRequest--以GET和POST请求为例说明

首先说一下HttpRequest、WebClient和HttpClient的关系:HttpRequest是基层的请求方式,WebClient是对HttpRequest的简化封装,在WebClient中有对HttpRequest的默认设置;HttpClient是重写的请求方式,相对于HttpRequest更简单实现异步请求,是.NetCore中更推崇的方式。 说明:以下代码中 在GetA...

aidx48924的博客 746

WebRequest/HttpWebRequest/HttpRequest/WebClient/HttpClient的区别

1.WebRequest和HttpWebRequest   WebRequest的命名空间是:System.Net,它是HttpWebRequest的抽象父类(还有其他子类如FileWebRequest,FtpWebRequest),WebRequest的子类都用于从web获取资源。HttpWebRequest利用HTTP 协议和服务器交互,通常是通过 GET 和 POST 两...

banyongzhan5405的博客 434

.Net(C#)后台发送Get和Post请求(HttpClient、Flurl.Http、WebRequest和WebClient、RestSharp)

本文主要介绍分别通过HttpClient、Flurl.Http、WebRequest和WebClient、RestSharp发送Get和Post请求的方法。 原文地址:https://www.cjavapy.com/article/50/

亮亮的专栏 2043

.Net(C#)后台发送Http Get和Http Post请求的几种方法总结(可参考下)

转载地址https://www.cjavapy.com/article/50/ 本文主要介绍分别通过HttpClient、Flurl.Http、WebRequest和WebClient发送Get和Post请求的方法。 1、通过HttpClient发送Get和Post请求 适用平台:.NET Framework 4.5+, .NET Standard 1.1+, .NET Core 1.0+ 其它平...

weixin_40333655的博客 2万+

C#的WebRequest类

WebRequest。

weixin_54498280的博客 751

正负压可调栅极隔离驱动设计:从SiC MOSFET到IGBT的匹配策略

功率半导体器件的开关特性很大程度上取决于栅极驱动电路的设计。MOSFET与IGBT的栅极输入电容充放电过程,决定了开通与关断的瞬态表现,而米勒效应引发的寄生耦合则可能造成误导通。为应对不同器件对栅极电压的差异化需求,正负压可调的隔离栅极驱动方案成为工程实践中的通用解。正压用于可靠导通,负压用于强化关断并抑制dv/dt干扰,其电压幅值需根据器件类型和栅极氧化层耐压精确匹配。同时,信号隔离与电源隔离分别处理,采用数字隔离器和独立DC-DC电源,可确保高占空比下偏置电压稳定。该技术广泛应用于电机驱动、光伏逆变器、

weixin_33858485的博客 258
上一篇: NonAction与ChildActionOnly
下一篇: WebApi接口测试工具:WebApiTestClient
【Help】
博客等级 码龄16年 192粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值