我的一个控制器中有一个动作,它将从我的MVC网站外部接收HTTP POST请求。
所有这些POST请求都将具有相同的参数,我需要能够解析参数。
如何从操作中访问帖子数据?
这可能是一个非常简单的问题!
由于
答案 0 :(得分:52)
您可以在Request.Form
获取HTTP请求中的POST数据。
答案 1 :(得分:38)
string data = new System.IO.StreamReader(Request.InputStream).ReadToEnd();
答案 2 :(得分:18)
使用
Request.InputStream
这将为您提供对HTTP消息正文的原始访问,该消息将包含所有POST变量。
http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx
答案 3 :(得分:13)
我在MVC控制器内部后试图访问POST数据。 InputStream已经被控制器解析,因此我需要将InputStream的位置重置为0以便再次读取它。
这段代码对我有用......
HttpContext.Current.Request.InputStream.Position = 0;
var result = new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
答案 4 :(得分:5)
Stream req = Request.InputStream;
req.Seek(0, System.IO.SeekOrigin.Begin);
string json = new StreamReader(req).ReadToEnd();
JavaScriptSerializer serializer = new JavaScriptSerializer();
dynamic items = serializer.Deserialize<object>(json);
string id = items["id"];
string image = items["image"];
///您可以按名称或索引访问参数
答案 5 :(得分:3)
Web服务器不应该关心请求的来源。如果您的客户端应用程序有一个名为username的输入控件,并且它会发布到您的应用程序,那么它将会像您从自己的应用程序发布的那样使用名为username的输入进行检索。
一个很大的警告是,如果你实施了AntiForgeryValidation,这将导致一个令人头疼的问题,即允许外部表单发布。