|
Программирование >> Руководство по созданию web приложений
Функция GetServerVariable Прототип функции GetServerVariable определен в структуре EXTENSION CONT-. oniicaHHoir нами ранее: BOOL ;.! ... * :- -.: V - г .-: - ..... LPSTR - : . : .. . .. - -0. l.Ddwf.ize): Через параметр hConn Вы должны передать этой функции идентификатор канала, полученный ; . поле CoririlD структуры EXTENSIOH COIITROL BL()(;K. Параметр IpszVariableName должен содержать указатель на строку имени переменной, содержимое которой ; . . Это содержимое будет записано функцией в ; ; . . адрес которого передается через параметр IpvBuffer, а размер - через параметр IpdwSize. Пиже перечислены возможные значения строк, передаваемых через параметр : - -Vari . .- - --Ш. среды ,4UTH T¥PE содержит тип идентификации, который применяется сервером. В этой переменной перечислены типы данных MIME, которые могут быть приняты браузером от сервера Web. ф СГИТЕПрЕЕНаТН Количество байт данных, которые расгпирение ISAPI должно получить от браузера. I CONTENTJYPE Тип данных, присланных браузером. Ф PATPIKFO Путь к виртуальному каталогу, в котором находится библиотека DLL расгпи-рения ISAPI. PATHTR.AMSUTED Физический путь к библиотеке DLL расгпирения ISAPI. 1 QUERY STRING Строка параметров, указанная в форме или теге ссылки <А>. Эта строка ука-.навапсач после адреса URL библиотеки DLL расгпирения ISAPI вслед за разделительным символом REMOTE ADDR Адрес IP узла, на котором . браузер посетителя. ф REIIOTEHOST Доменное имя узла, на котором работает браузер посетителя. Если эта информация недоступна (например, для узла не определен доменный адрес), то вместо доменного имени указывается адрес IP, как в переменной REMOTE ADDR. ф BEiuTEUSER Имя пользователя, которое применяет браузер для аутентификации. f UNI Имя до обработки фильтром ISAPI, которое iiiiiMft>icT брау- для аутентификации. . LHETH0O Метод доступа, который для передачи данных от браузера сер- веру Web. SCF В эту . записывается путь к wniaiv каталогу и имя библио- теки DLL . ISAPI. Анализируя эту переменную, ISAPI определит путь к своему файлу. : SERVER NAME имя сервера или адрес IP сервера Web, если доменное имя недоступно или не определено. ♦ Имя и версия протокола, который применяется запроса к расгпирению ISAPI. 1 SERVER PORT Номер порта, на котором браузер посылает запросы серверу Web. Если обработка запроса выполняется через защищенный порт, в этой строке записано значение 1, а если через - . 0. 1 SERVCP S0FTM4Pt Название и версия программного обеспечения Web. Версия следует после и отделяется символом />, # ALL HTTP Строка, закрытая двоичным нулем, в которую записаны значения всех переменных, имеющих отнощение к протоколу HTTP. Это, например, такие пе- как НТТР АССЕРТ, HTTP CONNECTION, . : - и т. д. Извлекать содержимое отдельных Ваща программа должна са- мостоятельно. Нри этом учесть, что названия переменных отделены от их символом двоеточия >, а поля разделены символом перевода строки. Обратите внимание, что названия этих строк почти совпадают е переменных среды, создаваемых для программ совпадение все же не полное. В случае . заверщения функция . возвращает зна- чение TRUE, а при возникновении ощибки - FALSE. Код ошибки можно определить с помощью функции вызвав се сразу после функции коды ощибок для функции GetServerVarlable : в таб- лице 7-2. Таблица 7-2. Коды Кол ошибки для функции OiiHCiiiine ERROR NO DATA 111.ц,Н1И имя переменной, передаваемой через параметр liJiiVar iablB laiiii . BiLiu.n>a значение параметра HeOFF - Буфер, адрес которого указан с помощью параметра 1р>;Ву*аг слишком мал. Необходимый размер буфера записывается по адресу, который был аерагдап функции через параметр . Буфер, адрес которого указан с аана,)1Д,а1 параметра IpvBuffer, слишком мал. В результате данные прочитаны частично, причем [Siaiifp буфера, необходимый для чтения всех данных, Hcai.aacaTCU Данные не получены Ниже мы показываем пример использования функции GetServerVariable для ползщения содержимого переменной vlimivk ,ALL HTTP в буфер azTeipBuf. CHAR DWORD . = 4096; idtiSiza), szTempBuf); Функция ReatlClient Прототип функции ReadClient записан в структуры . : .: ROL PLODK и выглядит следующим образом: BOOL (WNAPI * ReadClient) (HCONN PonnlD. lP/OIP IpvBuffer, LPOaOBP IpdwSize); Через параметр hConn этой функции надо передать идентификатор канала, полученный через поле ConnlD ai pa агары EXTENSIONCONTROLBLQCK. Функция ReadClient читает данные в буфер, адрес которого передается через параметр IpvBuffer, а размер - через параметр IpdwSize. В случае успеха функция возвращает значение TRUE, а при ошибке - FALSE. Код ошиб- ки можно посредством функции Работа с функцией Re adClient имеет особенности. Когда расширение ISAPI получает управление, через структуру типа EXTEN-передается адрес предварительно прочитанного блока данных, полученного от браузера посетителя. Как Вы знаете, адрес и размер этого блока данных - - в полях IpbPata и cbAvailable структу- ры - - . - . Однако размер предварительно прочитанных данных не может превышать 48 кб. Если все данные не поместились в буфер предварительного чтения, их необходимо дочитать функцией Re adClient. При этом следует . следующий алгоритм. Прежде всего следует сравнить размер предварительно считанных данных с полным размером данных, которые нужно считать (этот размер передается в поле cbTotalBytes структуры BLwCKl.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |