C# RESTful API新手关于错误400的问题

C# RESTful API新手关于错误400的问题,c#,asp.net-core-mvc,C#,Asp.net Core Mvc,问题如下: 我在服务器端有一个非常简单的POST方法: [HttpPost] [Route("//api/loggeduser")] public void Post([FromBody] LoggedUser loggedUser) 我试着从客户端调用它: var loggedUser = new LoggedUser { UserName = userName, Logged = true }; var json = JsonConvert.SerializeObjec

问题如下:

我在服务器端有一个非常简单的POST方法:

[HttpPost]
[Route("//api/loggeduser")]
public void Post([FromBody] LoggedUser loggedUser)
我试着从客户端调用它:

var loggedUser = new LoggedUser
{
    UserName = userName,
    Logged = true
};

 var json = JsonConvert.SerializeObject(loggedUser);
 HttpClient _httpClient = new HttpClient();
 HttpContent httpContent = new StringContent(json);
 response = await _httpClient.PostAsync("https://localhost:44311/api/loggeduser", httpContent);

我总是得到错误400。我做错了什么?有什么建议吗?提前感谢。

您的语法无效。您试图发送的任何信息的格式都不是服务器愿意接受的。您需要检查参数并确保以正确的语法编写。

我认为如果您告诉StringContent它应该使用哪种编码和内容类型,可能会起作用,如下所示:


HttpContent-HttpContent=newstringcontent(json,Encoding.UTF8,“application/json”)

您可以尝试将
内容类型
设置为
应用程序/json

StringContent content = new StringContent(json, Encoding.UTF8, "application/json");

为什么在路线的开头有两条斜线?(
[Route(“//api/loggeduser”)]
)因为我正在尝试我在互联网上看到的任何东西,因为我在技术上被卡住了。一个斜杠的结果是一样的。等等,你不是应该用适当的
json
content-type
Accept
头正确配置
HttpClient
?我似乎记得你必须这么做。这就解释了为什么
GET
请求工作得很好,因为我猜您是从查询字符串传入参数的,它根本不涉及JSON。谢谢您的回答。有没有办法检查到底出了什么问题?我获取[HttpGet]数据没有任何问题。客户机和服务器中的
LoggedUser
类是否相同?是的,它是相同的类(从服务器代码复制到客户机代码),您应该有一些文档,说明可以向URL发送哪些参数。如果没有文档,无论是谁管理该网站都应该能够帮助您。如果你觉得你有一个相当好的想法,你需要发送它,你需要检查并确保你的编码正确。正如@Shamposham所建议的,也许可以尝试显式地声明UTF-8编码。