我尝试对MVC控制器执行POST操作,如下所示:
string payload = "hello";
using (var httpClient = new HttpClient())
{
var str = new StringContent(new JavaScriptSerializer().Serialize(payload), Encoding.UTF8,
"application/json");
httpClient.BaseAddress = new Uri("http://localhost:52653/");
var response = httpClient.PostAsync("Home/TestPost", str).Result;
}
MVC控制器:
[HttpPost]
public ActionResult TestPost(string value)
{
var result = value;
return Content("hello");
}
当我调试时,我看到控制器中的断点命中但是"值" param是null。
这甚至可能吗?可以用这种方式发送对象吗?即(人)?
答案 0 :(得分:0)
尝试使用的FromBody属性。
正如@maccettura指出的那样,你必须包含适当的命名空间才能使用
using System.Web.Http;
[HttpPost]
public ActionResult TestPost([FromBody]string value)
{
var result = value;
return Content("hello");
}
另一种方法是:
[HttpPost]
public async Task<string> TestPost(HttpRequestMessage request)
{
var requestString = await request.Content.ReadAsStringAsync();
return requestString;
}
答案 1 :(得分:-1)
您可以使用JsonConvert.SerializeObject()
方法。
var str = new StringContent(JsonConvert.SerializeObject(payload).ToString(), Encoding.UTF8,"application/json");
序列化的JSON字符串如下所示:
{"payload":"hello"}
同时更改
public ActionResult TestPost(string value)
要
public ActionResult TestPost(string payload)