关于Request Payload 以及 后端如何通过C#接收其内容

欢欢欢欢 发表于 2019-4-23 14:58

当发起POST请求时,参数都放在HTTP的报文BODY里,可以像query参数的格式(k1=v1&k2=v2&k3=v3),也可以用multipart格式(multipart/form-data;boundary=--xxxxxxx),还有一种JSON格式,即Request Payload格式。

参考文档:摸着里

知道了它的含义,那C#如何获取数据呢

做了个小实验发现:

在一般处理程序(.ashx)中,直接使用如下代码即可获得数据:

using (var reader = new System.IO.StreamReader(context.Request.InputStream))

 {

        string data = reader.ReadToEnd();

}

但是在MVC中,使用上述方法却无法获取数据,应该是被封装后,丢失了!!在MVC中使用如下方法可以搞定:

 var bytes = new byte[HttpContext.Request.InputStream.Length];

HttpContext.Request.InputStream.Position = 0;

HttpContext.Request.InputStream.Read(bytes, 0, bytes.Length);

string data = System.Text.Encoding.UTF8.GetString(bytes);

参考文档:摸这里