Ответ 1
Данные POST из ваших HTTP-запросов можно получить в Request.Form
.
У меня есть действие в одном из моих контроллеров, который будет получать запросы HTTP POST из-за пределов моего веб-сайта MVC.
Все эти POST-запросы будут иметь одинаковые параметры, и мне нужно будет проанализировать параметры.
Как я могу получить доступ к пост-данным из действия?
Это потенциально очень простой вопрос!
Спасибо
Данные POST из ваших HTTP-запросов можно получить в Request.Form
.
string data = new System.IO.StreamReader(Request.InputStream).ReadToEnd();
Используйте
Request.InputStream
Это даст вам необработанный доступ к телу HTTP-сообщения, которое будет содержать все переменные POST.
http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx
Я пытался получить доступ к данным POST после того, как был внутри контроллера MVC. InputStream уже разбирался с контроллером, поэтому мне нужно было reset положение InputStream в 0, чтобы прочитать его снова.
Этот код работал у меня...
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"];
///вы можете получить доступ к параметрам по имени или индексу
Веб-сервер не должен заботиться о том, откуда приходит запрос. Если у вашего клиентского приложения есть элемент управления ввода, называемый именем пользователя, и он отправляется в ваше приложение, он будет воспринимать то же самое, что и ваш отправленный, если из вашего собственного приложения с именем с именем пользователя.
Одно огромное предостережение - это если вы внедрили AntiForgeryValidation, из-за чего большая головная боль позволит публиковать внешнюю форму.