[HttpPost]
public async Task<IActionResult> testpost([FromForm] object info)
{
//Postman工具测试结果:
//FromBody,Postman的body只有=raw+json时才进的来
//参数为空时,Body(form-data、x-www-form-urlencoded)解析到的数据也有所不同
Dictionary<string,object> parmsVals=new Dictionary<string,object>();
try
{
if (HttpContext.Request.Body != null)
{
Stream _stream = HttpContext.Request.Body;
//_stream.Position = 0;
using (StreamReader reader = new StreamReader(_stream, Encoding.UTF8))
{
string strv = await reader.ReadToEndAsync();
if (!string.IsNullOrEmpty(strv) && strv.Trim().StartsWith("{") && strv.Trim().EndsWith("}"))
{
parmsVals = JsonConvert.DeserializeObject<Dictionary<string, object>>(strv.Trim());
}
else
{
parmsVals.Add("stream_str", strv);
}
}
}
}
catch { }
if (info != null && JsonConvert.SerializeObject(info).Trim()!="{}")
{
parmsVals.Add("info", JsonConvert.SerializeObject(info));
}
try
{
var files = Request.Form.Files;
if (files != null && files.Count > 0)
{
}
}
catch { }
if (HttpContext.Request.Query.Keys.ToList() != null)
{
List<string> lst = HttpContext.Request.Query.Keys.ToList();
foreach (string key in lst)
{
if (!parmsVals.ContainsKey(key))
{
parmsVals.Add(key, Request.Query[key].ToString().Trim());
}
}
}
try
{
if (HttpContext.Request.Form != null)
{
List<string> lst = HttpContext.Request.Form.Keys.ToList();
foreach (string key in lst)
{
if (!parmsVals.ContainsKey(key))
{
parmsVals.Add(key, Request.Form[key].ToString().Trim());
}
}
}
}
catch(Exception ex)
{
string msg = ex.Message;
}
//Values/testurl
return Content(JsonConvert.SerializeObject(parmsVals));
}
一、Body以 from-data 传参数
二、Body以 x-www-from-urledcoded 传参数
三、Body以 raw+JSON 传参数