发送JSON对象HTTPClient.接收值为NULL WEB API ASP MVC

本文关键字:WEB NULL API ASP MVC 对象 JSON HTTPClient 发送 | 更新日期: 2023-09-27 17:50:07

我正在尝试将JSON数据发布到web api,两个项目都在我的本地机器上运行。

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri(@"http://localhost:53818/");
    var result = client.PostAsync("api/values", new StringContent(data, Encoding.UTF8, "application/json")).Result;
    string resultContent = result.Content.ReadAsStringAsync().Result;
    Console.WriteLine(resultContent);
}

这个post方法的接收值是NULL

public HttpResponseMessage Post([FromBody]string value)
{
    return new HttpResponseMessage(HttpStatusCode.Created);
}

编辑 -----------所以我设法找出了问题所在。我将这行代码替换为

client.PostAsync("api/values", new StringContent(data, Encoding.UTF8, "application/json")).Result;

和下面的,它工作,如果有人会张贴解释,我将不胜感激

var response = client.PostAsJsonAsync("api/values", data).Result;

发送JSON对象HTTPClient.接收值为NULL WEB API ASP MVC

这是因为WebApi不擅长从主体序列化基本类型,当你发送' content - type '报头作为application/json时,框架正试图用set json序列化器序列化内容,而不能够,这就是为什么你在变量中得到null。

  1. 将参数的类型从string更改为JToken或
  2. 包含处理纯文本的媒体类型格式化程序(参见https://stackoverflow.com/a/29914360/1422608)

因为您调用values而您的方法期望value。更改对value的调用或更改value的方法签名在这种情况下会更有意义