【问题标题】:How to fetch body data from IHttpActionResult in MVC Controller?如何从 MVC 控制器中的 IHttpActionResult 获取正文数据?
【发布时间】:2019-07-24 07:51:59
【问题描述】:

我有接收类的特定对象的 ApiController。这很完美,但是如果包含带有 JSON 的主体的 HTTP 请求与类的对象不匹配怎么办?我将收到一个空值的对象,因为 JSON 和一个类的对象之间不匹配。我的问题是,当用户发送格式不正确的 JSON 时,如何获取原始 JSON 请求?

public class Document{
string name;
int number;
}

JSON 请求

{
   "name":"Default name",
   "number":91526861713"
}

JSON 不正确,因为数字的数据类型是 int,而不是字符串“234”! 函数中的 documentObject 自动等于 null。 如何获取原始 JSON REQUEST?

[HttpPost]
public IHttpActionResult Receiving([FromBody]Document documentObject)
{

}

【问题讨论】:

  • 如何发布请求代码?可以分享一下代码吗?
  • 我正在使用 POSTMAN 发送,我想从请求中获取原始正文。

标签: c# asp.net-mvc asp.net-web-api controller httprequest


【解决方案1】:

你可以使用Request.Content,但是outputraw字符串。

像这样:

[HttpPost]
public async Task<IHttpActionResult> Receiving([FromBody]Document documentObject)
{
     var content = await Request.Content.ReadAsStringAsync();
     return Json(content); // output => "name=xxx&number=123"
}

【讨论】:

  • 我试过了,但是这个方法不会从正文请求中返回整个原始 JSON...
  • 您可以将输出字符串数据转换为json,只需使用split
  • 类的对象只是一个例子,真正的类和JSON要大得多。真正的问题是,如何读取不正确的 JSON 格式。当客户端尝试发送不正确的 JSON 时,我需要了解为什么该 JSON 不正确。例如,“JSON 不正确,因为您忘记在字符串数据类型上添加引号”......所以,问题是,当用户发送格式不正确的 JSON 时,IHTTPActionResults 会收到一个值为空的对象......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
相关资源
最近更新 更多