MVC3 Http Post на сторонний веб-сайт и добавить пользовательский Http заголовок - PullRequest
0 голосов
/ 29 ноября 2011

Кто-нибудь пытался добавить настраиваемый заголовок Http в приложение MVC, и я установлю действие формы для стороннего URL, сторонний URL ожидает некоторые определенные настраиваемые заголовки Http. И после того, как пользователь отправит форму из приложения MVC, контекст также должен быть переключен на сторонний URL.

Мне нужно собрать приложение MVC и прочитать значение со стороны сервера, а затем скомпоновать их в заголовке и отправить форму.

Спасибо

Hardy

Ответы [ 2 ]

1 голос
/ 29 ноября 2011

Нельзя добавлять пользовательские заголовки при использовании элемента HTML <form>. Нет ничего, что спецификация HTML может предложить в этом отношении.

Единственный способ добавить пользовательские заголовки - выполнить запрос POST на сторонний сайт из приложения ASP.NET MVC, используя WebClient или HttpWebRequest . Оба позволяют вам устанавливать пользовательские заголовки HTTP при выполнении HTTP-запроса к заданному URL. Очевидно, что недостатком является то, что вы выполняете запрос от имени своего серверного приложения, а не клиента, поэтому переключение контекстов может быть затруднительным.

В зависимости от вашего конкретного сценария (который вы не детализировали), могут быть разные способы решения проблемы.

0 голосов
/ 29 ноября 2011

Исходя из вашего вопроса, вы должны опубликовать эту информацию на стороннем веб-сайте, используя настроенный HTTP-запрос.

Вы можете сделать это внутри действия напрямую, обработав сообщение формы с помощью HttpWebRequest и используя результат действия, чтобы поделиться подтверждением с пользователем.

Например:

public ActionResult PostTest()
        {
            // Create a request using a URL that can receive a post. 
            WebRequest request = WebRequest.Create ("http://www.contoso.com/PostAccepter.aspx ");
            // Set the Method property of the request to POST.
            request.Method = "POST";
            // Create POST data and convert it to a byte array.
            string postData = "This is a test that posts this string to a Web server.";
            byte[] byteArray = Encoding.UTF8.GetBytes (postData);
            // Set the ContentType property of the WebRequest.
            request.ContentType = "application/x-www-form-urlencoded";
            // Set the ContentLength property of the WebRequest.
            request.ContentLength = byteArray.Length;
            // Get the request stream.
            Stream dataStream = request.GetRequestStream ();
            // Write the data to the request stream.
            dataStream.Write (byteArray, 0, byteArray.Length);
            // Close the Stream object.
            dataStream.Close ();
            // Get the response.
            WebResponse response = request.GetResponse ();
            // Display the status.
            Console.WriteLine (((HttpWebResponse)response).StatusDescription);
            // Get the stream containing content returned by the server.
            dataStream = response.GetResponseStream ();
            // Open the stream using a StreamReader for easy access.
            StreamReader reader = new StreamReader (dataStream);
            // Read the content.
            string responseFromServer = reader.ReadToEnd ();

            // Clean up the streams.
            reader.Close ();
            dataStream.Close ();
            response.Close ();


            return View(responseFromServer);
        }

См. MSDN о том, как использовать HttpWebRequest для отправки форм HTTP Post .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...