asp.net-mvc – MVC控制器:从HTTP正文获取JSON对象?
|
我们有一个MVC(MVC4)应用程序,有时可能会得到一个JSON事件从第三方POST到我们的特定URL(“http://server.com/events/”)。 JSON事件在HTTP POST的正文中,正文是严格的JSON(Content-Type:application / json – 不是在某些字符串字段中使用JSON的表单 – post)。 如何在控制器的主体内部接收JSON主体?我试过下面但没有得到任何东西 [编辑]:当我说没有得到任何东西我的意思是jsonBody总是null,无论我定义为对象还是字符串。 [HttpPost]
// this maps to http://server.com/events/
// why is jsonBody always null ?!
public ActionResult Index(int? id,string jsonBody)
{
// Do stuff here
}
注意,我知道如果我给一个强类型的输入参数声明方法,MVC做整个解析和过滤,即。 // this tested to work,jsonBody has valid json data
// that I can deserialize using JSON.net
public ActionResult Index(int? id,ClassType847 jsonBody) { ... }
然而,我们得到的JSON是非常多样的,所以我们不想为每个JSON变量定义(和维护)数百个不同的类。 我测试这个由以下curl命令(这里的JSON的一个变体) curl -i -H "Host: localhost" -H "Content-Type: application/json" -X POST http://localhost/events/ -d '{ "created": 1326853478,"data": { "object": { "num_of_errors": 123,"fail_count": 3 }}}
解决方法似乎如果> Content-Type:application / json和 然后MVC没有真正绑定到任何特定的类的POST主体。也不能只是获取POST主体作为ActionResult的参数(在另一个答案中建议)。很公平。您需要自己从请求流中提取它并处理它。 [HttpPost]
public ActionResult Index(int? id)
{
Stream req = Request.InputStream;
req.Seek(0,System.IO.SeekOrigin.Begin);
string json = new StreamReader(req).ReadToEnd();
InputClass input = null;
try
{
// assuming JSON.net/Newtonsoft library from http://json.codeplex.com/
input = JsonConvert.DeserializeObject<InputClass>(json)
}
catch (Exception ex)
{
// Try and handle malformed POST body
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
//do stuff
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在数据库中存储ASP.Net MVC视图
- asp.net – 如何处理错误时使用jQuery.ajax()?
- asp.net – 干净的方式来防止输入按钮提交表单
- asp.net-mvc – ASP.NET MVC – 从查询字符串中获取对象列表
- asp.net – 如何使用JSON方法序列化javascript对象
- asp.net-mvc – 如何最好地实现保存|保存并关闭|在ASP.NET
- 尝试使用VS和IIS Express在本地设置HTTPS时出现连接重置错误
- asp.net – 触发OWIN cookie中间件设置为被动身份验证模式的
- asp.net-mvc – mvc创建我自己的html帮助器,如何访问httpco
- asp.net实现生成缩略图及给原始图加水印的方法示例
- 查看服务器运行多少个ASP.NET Core程序
- 如何在ASP.Net中将HTML页面转换为图像格式
- asp.net-mvc-4 – ASP.NET MVC 4移动功能
- entity-framework – 使用Entity框架核心生成和访
- asp.net-mvc – ASP.NET MVC WebApi:没有为此对
- 如何添加自定义属性到ASP.NET控件
- asp.net – 使用WebAPI时重新验证模型(TryValida
- asp.net – SignalR不再工作“找不到包含OwinSta
- asp.net-mvc – ASP.NET MVC视图模型的最佳做法
- Asp.net MVC Razor – 自定义javascript里面的if
