C# HttpWebResponse sendin null JSON string



这让我非常困惑。我有一个用于 POST 的 Web API 处理程序,如下所示:

[HttpPost]
public IActionResult Post([FromBody]string jsonString)
{
if (jsonString == null)
return new ObjectResult("Bad JSON");

我的调用方看起来像这样(借用自如何将 JSON 发布到服务器?

public async void PostJson(string path, string payload)
{
string url = string.Format("{0}{1}", BaseAddress, path); // Not the issue, the URL is good...
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(payload);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Console.WriteLine(string.Format("Response: {0}", result.ToString()));
Console.WriteLine("Press any key...");
Console.ReadKey();
}

} 问题来了。当我使用 POSTMAN 发布 JSON 字符串(如有效负载中提供的那样(时,我的 WebApi 会获得正确的 JSON 字符串。然而,当我使用上面列出的代码(以及我通过研究尝试的许多其他方法(时,我总是在我的 web API 中获得 jsonString 的 NULL 值。

谁能对此有所了解?

我在这里找到了答案:ASP.NET 核心API POST参数始终为空

我必须承认,当我在当天早些时候第一次遇到这种方法时,我没有考虑过这种方法,但套用福尔摩斯的话,一旦你用尽了其他可能性......

简而言之,我将内容类型更改为文本/纯文本,并将格式化程序添加到我的 web api Startup.cs 文件中(如另一个链接所示(,这奏效了。

最新更新