Категория: ASP.NET | Кодементор

Недавно я столкнулся с интересным требованием отправлять XML-данные на определенный URL-адрес с помощью POST, что означает, что мне нужно отправить некоторые XML-данные на URL-адрес. Я пришел, чтобы ответить в течение пары часов «погуглить» и НИОКР. Ниже приведен пример кода, который я создал для объяснения техники. Сценарий определяет здесь, объясняет отправку данных между двумя веб-сайтами, один из которых является запрашивающим веб-сайтом, который отправляет XML-данные POST, а другой — веб-сайтом-ответчиком, который собирает данные с запрашивающего веб-сайта.

Пошаговая инструкция выглядит следующим образом.

  1. Откройте экземпляр Microsoft Visual Studio и в меню файлов выберите параметр для создания веб-сайта/веб-приложения ASP.NET. Создайте два веб-сайта с помощью этой опции и назовите эти веб-сайты удобными для пользователя именами, такими как Запрашивающий и Ответчик. Для облегчения просмотра разработчиком сделайте эти веб-сайты под единым решением Visual Studio.
  2. По умолчанию внутри каждого веб-сайта будет страница default.aspx. Просто удалите эту страницу, мы можем создать новые страницы для нашего образца.
  3. Добавьте новую страницу на сайт Заявителя. Мы можем назвать эту страницу как requestor.aspx. Наша цель — опубликовать XML-данные из requestor.aspx в responseer.aspx веб-сайта Responder. Используя страницу ответчика, мы сохраним эти XML-данные в текстовый (.txt) файл. Добавьте новую страницу на веб-сайт Responder, назовите эту страницу requestor.aspx.
  4. Веб-сайт Host Responder в вашем локальном IIS.
  5. Выберите веб-сайт запрашивающего. Создайте страницу запрашивающего, как показано на изображении ниже.

Дизайн страницы запрашивающей стороны
Одно основное многострочное текстовое поле для данных XML, текстовое поле для ввода URL-адреса для отправки данных XML и кнопка

6. Обработайте событие нажатия кнопки, добавьте к этому событию следующий фрагмент кода.

protected void btnPostXml_Click(object sender, EventArgs e)
{
        System.Net.WebRequest req = null;
        System.Net.WebResponse rsp = null;
        try
        {
            string uri = txtURI.Text;
            req = System.Net.WebRequest.Create ( uri );
            req.Method = "POST";
            req.ContentType = "text/xml";
            System.IO.StreamWriter writer = new System.IO.StreamWriter ( req.GetRequestStream () );
            writer.WriteLine ( txtXMLData.Text );
            writer.Close ();
            rsp = req.GetResponse ();
        }
        catch
        {
            throw;
        }
        finally
        {
            if (req != null) req.GetRequestStream ().Close ();
            if (rsp != null) rsp.GetResponseStream ().Close ();
        }
}

7.Выберите веб-сайт Responder. Возьмите событие загрузки страницы страницы Responder.aspx. Добавьте следующий фрагмент кода в событие Load.

protected void Page_Load(object sender, EventArgs e)
    {
        Page.Response.ContentType = "text/xml";
        System.IO.StreamReader reader = new System.IO.StreamReader ( Page.Request.InputStream );
        String xmlData = reader.ReadToEnd ();
        System.IO.StreamWriter SW;
        SW = File.CreateText ( Server.MapPath(".")+@"\"+ Guid.NewGuid () + ".txt" );
        SW.WriteLine ( xmlData );
        SW.Close ();
    }

Здесь мы читаем поток данных из запроса страницы и записываем эти данные в текстовый файл.
Примечание : В этом образце я сделал ValidateRequest = «false», чтобы запрашивающая сторона принимала XML-данные в сообщении формы.

Эту методологию также можно использовать в качестве ОБРАТНОГО ВЫЗОВА на URL-адрес с некоторой публикацией данных.

Возьмите пример кода(требуется VS 2010)

Спасибо, что прочитали этот пост. Пожалуйста, прокомментируйте, если у вас есть какие-либо проблемы / сомнения с кодом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *