C# 发布JSON对象HTTPClient。收到的值为空WEB API ASP MVC
我试图将JSON数据发布到web api,这两个项目都在我的本地机器上运行C# 发布JSON对象HTTPClient。收到的值为空WEB API ASP MVC,c#,asp.net,json,asp.net-mvc,http,C#,Asp.net,Json,Asp.net Mvc,Http,我试图将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")).Re
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方法中收到的值为空
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 你也可以
因为您调用值,而您的方法期望值。更改对value的调用或更改值的方法签名,在本例中,这些值更有意义从您的第一个代码段(您发出请求的地方)中,
数据
是什么样子的?我的数据是一个JSON文件,由另一个方法生成并传递到此方法,数据的生成是否正确?是否以WebAPI操作签名将自动绑定的方式命名数据?@Jasen能否请您详细解释一下您的意思?我已将参数类型更改为JToken,但现在StringContent正在抛出一个exception@IliaAptsiauri它抛出了什么异常?它说没有覆盖方法存在,我尝试过使用data.toString()基本上和以前一样,但不起作用如何使用MediaTypeFormatter
?我已经添加到我的应用程序中,你能告诉我…我们如何使用它吗?