gpt4 book ai didi

c# - 发布 JSON 对象 HTTPClient。收到的值为 NULL WEB API ASP MVC

转载 作者:可可西里 更新时间:2023-11-01 17:36:22 24 4
gpt4 key购买 nike

我正在尝试将 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);
}

This 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;

最佳答案

这是因为 WebApi 不擅长从正文中序列化原始类型,当您将“Content-Type” header 作为 application/json 发送时,框架正在尝试使用 set Json 序列化程序序列化内容,但“t 能够,这就是为什么你在变量中得到 null。

你可以

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

关于c# - 发布 JSON 对象 HTTPClient。收到的值为 NULL WEB API ASP MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30335915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com