我正在尝试将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;
这是因为WebApi不擅长从主体序列化基本类型,当你发送' content - type '报头作为application/json时,框架正试图用set json序列化器序列化内容,而不能够,这就是为什么你在变量中得到null。
- 将参数的类型从string更改为JToken或
- 包含处理纯文本的媒体类型格式化程序(参见https://stackoverflow.com/a/29914360/1422608)
因为您调用values而您的方法期望value。更改对value的调用或更改value的方法签名在这种情况下会更有意义