Класс HttpResponse
Ниже приведен ASP.NET-код на C++, который выполняется после щелчка на кнопке Make Reservation (Забронировать).
void cmdMakeReservation_Click( Object *sender, EventArgs *e) { HttpUtility *utility = new HttpUtility; String *query = String:.Concat (// Строка "City=", utility › UrlEncode(txtCity › Text)); // Город query = String::Format( // запрос = Строка:: Формат ("{0}&Hotel={l}", query, utility › UrlEncode(txtHotel › Text)); query = String::Format( // запрос = Строка:: Формат ("{0}&Date={l}", query, utility › UrlEncode(txtDate-XText)); query = String::Format(// запрос = Строка:: Формат ("{0}&NumberDays={1}", query, utility › UrlEncode(txtNumberDays › Text)); Response › Redirect(String::Concat( // Ответ › Переадресовать (Строка:: Concat ( "Reservation!.aspx?", query)); // запрос }
Метод cmdMakeReservation_Click строит строку запроса. Эта строка присоединяется к унифицированному указателю информационного ресурса (URL) страницы Reservation1.aspx. От унифицированного указателя информационного ресурса (URL) ее отделяет символ ?. В качестве разделителя элементов строки запроса используется символ &. Для кодирования отдельных элементов используется метод HttpUtility::UrlEncode. Символы "слэш" (в дате) и пробелы, например в названии "San Jose" кодируются отдельно.
Если щелкнуть на кнопке, будет вызван метод Page_Load класса Reservationl, отображающий страницу, с помощью которой можно забронировать место в гостинице. Этот метод считывает название города, название гостиницы, дату и количество дней, которое вы планируете провести в гостинице, а затем отображает полученные данные на возвращаемой Web-странице.
void Page_Load(Object *sender, EventArgs *e) { Page *p = dynamic_cast<Page *>(sender); // Страница *р = dynamic_cast <Страница *> (отправитель); HttpRequest *request = p › get_Request(); HttpResponse *response = p › get_Response(); response › Write("Making reservation for…"); // ответ › Запись ("Делаю резервирование для… "}; response › Write("<br>"); // ответ › Запись String *city = request › Params › get_Item("City"); // Строка *city = запрос › Params › get_Item ("Город"); response › Write(String::Concat("City = ", city)); // ответ › Запись (Строка:: Concat ("Город = ", город)); response › Write("<br>"); // ответ › Запись String *hotel = request › Params › get_Item("Hotel"); // Строка *hotel = запрос › Params › get_Item ("Гостиница"); response › Write(String::Concat("Hotel = ", hotel)); // ответ › Запись (Строка:: Concat // "Гостиница = ", гостиница)); response › Write("<br>"); // ответ › Запись String *strDate = request › Params › get_Item("Date"); // Строка *strDate = запрос › Params › get_Item ("Дата"); response › Write(String::Concat("Date = ", strDate)); // ответ › Запись (Строка:: Concat ("Дата = ", strDate)); response › Write("<br>"); // ответ › Запись String *strDays = // Строка request › Params › get_Item("NumberDays"); response › Write(String::Concat( // ответ › Запись (Строка:: Concat ("NumberDays = ", strDays)); response › Write("<br>"); // ответ › Запись }
Строку запроса можно увидеть в адресной строке браузера. На рис. 10.15. показана выходная информация, выводимая браузером (На самом деле, наша программа не бронирует место в гостинице, она всего лишь выводит переданные ей параметры).
Рис. 10.15. Вот что выводит браузер после бронирования места в гостинице
Включите трассировку. Вывод трассировки продемонстрирует идеи, которые мы обсудили, когда говорили о программировании запросов и ответов в Web-программах. В частности, стоит изучить коллекцию Query String, показанную на рис. 10.16.
Рис. 10.16. Строка запроса используется для того, чтобы передать параметры при переназначении