Объект HttpRequest Если объект HttpResponse позволяет разработчику с максимальным удобством отправлять информацию удаленному пользователю, не заботясь о различных мелочах физического уровня, а сосредотачиваясь именно на логике отсылаемого пакета, то объект HttpRequest помогает разработчику легко разгрести ту кучу разнородной информации, которая приходит от удаленного пользователя. В этот объект помещается информация, посылаемая браузером на сервер. В блоке принимаемой информации могут находиться данные, введенные пользователем в элементы управления форм, URL запрошенного ресурса, содержание cookies и многое другое. Объект HttpRequest поможет разработчику получить именно ту информацию, которая ему нужна для функционирования приложения. Мы поступим так же, как и в предыдущем разделе — рассмотрим перечень свойств и методов объекта. Принципы и основные приемы работы с данным объектом все равно будут объяснены в иных разделах, посвященных конкретным задачам Web-приложений. Начнем со свойств. AcceptTypes. Свойство содержит в качестве значения массив строк типа string, в которых записываются типы MIME, которые поддерживаются браузером удаленного пользователя. AppiicationPath. Свойство содержит путь к виртуальному каталогу, в котором находится ASP.NET приложение, относительно корневого каталога WWW-сервера. Browser. Составное свойство, в котором указывается список параметров браузера удаленного пользователя. Значение данного свойства имеет тип HttpBrowserCapabalities. Соответственно, объект подобного типа имеет свои свойства, которые необходимо перечислить. Activexcontrois. Свойство логического типа, указывающее, разрешено ли данному браузеру работать с элементами ActiveX. aol. Свойство логического типа, указывающее, использует ли удаленный пользователь специализированный браузер службы AOL. Backgroundsounds. Свойство логического типа, указывающее, разрешено ли данному браузеру воспроизводить звуковые файлы, прикрепленные к Web-страницам. 76 Beta. Свойство логического типа, сигнализирующее, что браузер удаленного пользователя является всего лишь бета-версией с возможно усеченной функциональностью. Browser. Значение данного свойства является строкой, в которой содержится условное наименование браузера. Это же наименование передается в виде содержимого заголовка HTTP с наименованием User-Agent. cdf. Свойство логического типа, указывающее, может ли браузер удаленного пользователя обрабатывать push-каналы доставки информации, созданные на основе формата CDF (Channel Definition Format). Cookies. Свойство логического типа, указывающее, разрешено ли браузеру сохранять cookies на машине удаленного клиента. crawler. Свойство логического типа, указывающее, установлено ли в браузере пользователя средство поиска Web crawler. Frame ss Свойство указывает, может ли браузер пользователя отображать фреймы. В настоящее время этот вопрос, очевидно, не имеет особого смысла. JavaApplets. Свойство логического типа, указывающее, может ли браузер удаленного пользователя корректно работать с апплетами Java. JavaScript. Логическое свойство, в котором указывается, умеет или нет браузер удаленного пользователя интерпретировать и выполнять Java-сценарии. MajorVersion. Свойство содержит основной номер версии браузера, т. е. число, стоящее до точки в полном номере версии. Значение данного свойства имеет, естественно, тип integer. MinorVersion. Свойство указывает дополнительный номер версии, т. е. число, находящееся после первой точки в полном номере версии. MsoomVersion. В свойстве указывается номер версии объектной модели документа (Microsoft XML Document Object Model), которая поддерживается браузером пользователя. Platform. В данном свойстве содержится кодовое наименование операционной системы, которая установлена на машине удаленного пользователя. Естественно, значение данного свойства имеет типString. Tables. Свойство указывает, может ли браузер пользователя отображать таблицы, включаемые в состав HTML-документов. Да, было когда-то такое время, когда браузеры не могли работать с таблицами. Туре. В данном свойстве указываются кодовое наименование браузера и основной номер его версии. Значение свойства имеет тип string. VBScript. Логическое свойство, в котором указывается, умеет или нет браузер удаленного пользователя интерпретировать и выполнять сценарии, написанные на языке VBScript. version. Свойство содержит в строковом виде полную версию применяемого пользователем браузера. wscDOMVersion. В свойстве указывается номер версии объектной модели документа (W3C Document Object Model), которая разработана консорциумом WWW. winie. Логическое свойство, в котором указывается, работает удаленный пользователь на шестнадцатиразрядной версии Windows или нет. Win32. Логическое свойство, в котором указывается, работает удаленный пользователь на тридцатидвухразрядной версии Windows или нет. clientcertificate. Значение данного свойства имеет тип HttpCiientCertificate и содержит информацию об установках безопасности клиента, если тот использует соединение по протоколу SSL 3.0. contentEncoding. В этом свойстве указывается наименование кодировки символов, примененной браузером при отправке информации на сервер. contentLength. В данном свойстве указывается размер блока информации, переданного на сервер. Размер рассчитывается в байтах. Естественно, значение свойства имеет тип integer. contentType. Свойство содержит наименование MIME-типа для принимаемой сервером информации. Cookies. Свойство содержит коллекцию cookies, которые передаются на сервер браузером пользователя. Filepath. В свойстве содержится путь к документу, который запросил пользователь. При этом не учитывается путь для перемещения внутри запрошенного документа, т. е. все закладки, если таковые были указаны в URL, этим свойством игнорируются. Путь указывается только к файлу. Files. Свойство содержит коллекцию файлов, переданных пользователем на сервер. Естественно, свойство имеет смысл обрабатывать только в том случае, если указан MIME-ТИП multipart /formdata. Filter. Данное сюйстю является функционально идентичным своему одноименному близнецу, который применяется к объекту HttpResponse. В этом свойстве указывается фильтр, применяемый к входящему потоку информации. Form. В свойстве содержится коллекция наименований органов управления формы, которая была использована посетителем сайта для ввода информации. Headers. В свойстве содержится коллекция заголовков протокола HTTP, переданных браузером удаленного пользователя на сервер. HttpMethod. Свойство указывает, какой именно тип передачи информации на сервер был использован браузером удаленного пользователя. В качестве значений применяются ключевые слова Get, Post и Head. Тип значения свойства, естественно, string. inputstream. В свойстве содержится входящий поток информации в "сыром" виде. А именно таким, каким его принял сервер. isAuthenticated. Логическое свойство, указывающее, прошел ли удаленный пользователь аутентификацию или нет. issecureconnection. Логическое свойство, которое применяется для указания, что клиент пользуется защищенным протоколом соединения, таким, как SSL. Pa rams. Свойство объединяет в себе коллекцию всех переменных изQueryString, Form, ServerVariables и Cookies. Path. В свойстве указывается путь в системе виртуальных каталогов к запрошенному удаленным пользователем ресурсу. Pathinfo. Свойство содержит часть URL, запрошенного пользователем, располагающуюся после расширения файла. Другими словами, это добавочная информация, включенная в состав URL, помимо основного документа. PhysicaiAppiicationpath. В свойстве содержится физический (а не виртуальный) путь к каталогу, в котором находится и выполняется действующее приложение ASP.NET. PhysicaiPath. Свойство содержит физический путь, соответствующий виртуальному расположению файла, запрошенного пользователем. QueryString. В свойстве находится коллекция с наименованиями всех переменных и параметров, переданных в строке запроса URL. Обычно в эту строку добавляются наименования органов ввода информации из форм и значений, введенных в них пользователем, если применен метод передачи get. RawUri. В свойстве находится URL, запрошенный пользователем, в сыром виде, не прошедшим процедуру лексического анализа для выделения из него составных частей. Если у разработчика есть такое желание, он может самостоятельно разбирать этот URL. RequestType. Свойство позволяет получать или устанавливать тип передачи информации от браузера удаленного пользователя на сервер. В качестве значений, естественно, могут быть использованы слова get и post. ServerVariables. Свойство позволяет приложению получить доступ к коллекции наименований стандартных свойств сервера и браузера. TotaiBytes. В свойстве указывается размер пришедшего на сервер запроса от удаленного пользователя в байтах. Естественно, значение данного свойства имеет тип integer. uri. В данном составном свойстве собрана самая различная информация об URL, запрошенном пользователем. uriReferrer. В данном свойстве содержится информация об URL той страницы, с которой пользователь пришел на текущую. userAgent. Свойство содержит неразобранную информацию о браузере, применяемом удаленным пользователем, в виде одной строки. userHostAddress. В свойстве содержится IP-адрес удаленного пользователя, который послал данный запрос. userHostName. В свойстве содержится доменное имя, приписанное удаленному пользователю. userLanguages. Значение содержит отсортированный массив строк, в которых указываются языки, используемые удаленным пользователем, т. е. его лингвистические предпочтения. На этом список свойств встроенного объекта HttpRequest заканчивается. Мы переходим к его уникальным методам. BinaryRead. Метод позволяет читать определенное количество байтов из входящего потока информации. В качестве параметра методу передается целочисленное значение, указывающее, сколько именно байтов следует прочитать. Метод возвращает массив типа Byte. MapimageCoordinates. Метод возвращает двумерный массив, содержащий координаты активных областей, присущих изображению-гиперссылке. saveAs. Метод сохраняет входящий поток информации на диск в виде файла. В качестве параметров методу передаются строка с наименованием создаваемого файла и логическое значение, указывающее, следует ли сохранять помимо основного потока информации еще и заголовки протокола HTTP, пришедшие вместе с ним. Список уникальных методов объекта HttpRequest исчерпан. Настало время перейти к рассмотрению других встроенных объектов.