關(guān)于Request Payload 以及 后端如何通過C#接收其內(nèi)容
當(dāng)發(fā)起POST請求時,參數(shù)都放在HTTP的報文BODY里,可以像query參數(shù)的格式(k1=v1&k2=v2&k3=v3),也可以用multipart格式(multipart/form-data;boundary=--xxxxxxx),還有一種JSON格式,即Request Payload格式。
參考文檔:摸著里
知道了它的含義,那C#如何獲取數(shù)據(jù)呢?
做了個小實驗發(fā)現(xiàn):
在一般處理程序(.ashx)中,直接使用如下代碼即可獲得數(shù)據(jù):
using (var reader = new System.IO.StreamReader(context.Request.InputStream))
{
string data = reader.ReadToEnd();
}
但是在MVC中,使用上述方法卻無法獲取數(shù)據(jù),應(yīng)該是被封裝后,丟失了!!在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);
參考文檔:摸這里