发布字符串请求

时间:2016-03-19 08:53:41

标签: c# asp.net asp.net-web-api asp.net-core

我在asp.net核心webapi中有这个Post请求处理程序

[HttpPost()]
public IActionResult Post([FromBody]string value)
{
    if (value == null)
    {
        return new HttpStatusCodeResult(400);
    }
    else
    {
        return new HttpStatusCodeResult(200);
    }
}

我正在尝试使用其他应用中的HttpClient发布字符串

using(var client = new HttpClient())
{
    var content = new StringContent("test test");
    var response = client.PostAsync("http://localhost:57316/api/values", content).Result;
    var responseString = response.Content.ReadAsStringAsync().Result;
    Console.WriteLine(responseString);
}

当我调试上面的处理程序时收到请求,但是值总是为null,我希望它是"test test",我做错了吗?

1 个答案:

答案 0 :(得分:1)

由于您未在请求中设置明确的Content-Type,因此可能的ASP.NET Web API将其解释为JSON,但是" test test " (单独,没有引号)是无效的JSON,它将失败。

尝试以下方法之一:

  1. 将请求的Content-Type标题设置为" text / plain"。
  2. 尝试将值作为带双引号的有效JavaScript字符串发送(即发送new StringContent("\"test test\"");
  3. 由于JSON读者通常不喜欢单个值,您可以将请求类型设置为某个POCO并设置字符串。