Tengo una acción en uno de mis controladores que va a recibir solicitudes HTTP POST desde fuera de mi sitio web MVC.
Todas estas solicitudes POST tendrán los mismos parámetros y necesito poder analizar los parámetros.
¿Cómo puedo acceder a los datos de la publicación desde dentro de la acción?
¡Esta es una pregunta potencialmente muy simple!
Gracias
Los datos POST de sus Reques HTTP pueden obtenerse en Request.Form
.
string data = new System.IO.StreamReader(Request.InputStream).ReadToEnd();
Utilizar
Request.InputStream
Esto le dará acceso directo al cuerpo del mensaje HTTP, que contendrá todas las variables POST.
http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx
Estaba intentando acceder a los datos POST después de estar dentro del controlador MVC. InputStream ya fue analizado por el controlador, por lo que tuve que restablecer la posición de InputStream a 0 para leerlo nuevamente.
Este código funcionó para mí ...
HttpContext.Current.Request.InputStream.Position = 0;
var result = new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
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"];
/// puedes acceder a los parámetros por nombre o índice
El servidor web no debería importar de dónde proviene la solicitud. Si su aplicación cliente tiene un control de entrada llamado nombre de usuario y lo publica en su aplicación, lo recuperará igual que si lo publicara desde su propia aplicación con una entrada llamada nombre de usuario.
Una gran advertencia es si ha implementado AntiForgeryValidation, que causará un gran dolor de cabeza para permitir que se publique una forma externa.