Функция HttpOpenRequestA (wininet.h)

Создает дескриптор HTTP-запроса.

Синтаксис

HINTERNET HttpOpenRequestA(
  [in] HINTERNET hConnect,
  [in] LPCSTR    lpszVerb,
  [in] LPCSTR    lpszObjectName,
  [in] LPCSTR    lpszVersion,
  [in] LPCSTR    lpszReferrer,
  [in] LPCSTR    *lplpszAcceptTypes,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

Параметры

[in] hConnect

Дескриптор http-сеанса, возвращенного InternetConnect.

[in] lpszVerb

Указатель на строку, завершающуюся значением NULL, которая содержит HTTP-команду, используемую в запросе. Если этот параметр имеет значение NULL, функция использует GET в качестве HTTP-команды.

[in] lpszObjectName

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

[in] lpszVersion

Указатель на строку, завершающуюся значением NULL, которая содержит версию HTTP, используемую в запросе. Параметры в Обозреватель Интернета переопределяют значение, указанное в этом параметре.

Если этот параметр имеет значение NULL, функция использует версию HTTP 1.1 или 1.0 в зависимости от значения параметров internet Обозреватель.

Значение Значение
HTTP/1.0
HTTP версии 1.0
HTTP/1.1
HTTP версии 1.1

[in] lpszReferrer

Указатель на строку, завершающуюся значением NULL, которая указывает URL-адрес документа, из которого был получен URL-адрес в запросе (lpszObjectName). Если этот параметр имеет значение NULL, ссылочный объект не указан.

[in] lplpszAcceptTypes

Указатель на массив строк со значением NULL, указывающий типы мультимедиа, принятые клиентом. Ниже приведен пример.

PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};

Неправильное завершение массива с помощью указателя NULL приведет к сбою.

Если этот параметр имеет значение NULL, клиент не принимает типы. Серверы обычно интерпретируют отсутствие типов accept, чтобы указать, что клиент принимает только документы типа "text/*" (то есть только текстовые документы — без изображений или других двоичных файлов).

[in] dwFlags

Параметры браузера. Этот параметр может быть любым из следующих значений.

Значение Значение
INTERNET_FLAG_CACHE_IF_NET_FAIL
Возвращает ресурс из кэша, если сетевой запрос к ресурсу завершается сбоем из-за ERROR_INTERNET_CONNECTION_RESET (соединение с сервером было сброшено) или ERROR_INTERNET_CANNOT_CONNECT (попытка подключения к серверу завершилась сбоем).
INTERNET_FLAG_HYPERLINK
При определении того, следует ли перезагрузить элемент из сети, принудительно выполняется перезагрузка, если не было возвращено время истечения срока действия и время последнегоmodified, возвращенное сервером.
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
Отключает проверку сертификатов на основе SSL/PCT, возвращаемых с сервера, по имени узла, указанному в запросе. Функции WinINet используют простой проверка сертификатов, сравнивая имена узлов и простые правила подстановки.
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
Отключает проверку сертификатов на основе SSL/PCT на правильные даты действия.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
Отключает обнаружение этого специального типа перенаправления. При использовании этого флага функции WinINet прозрачно разрешают перенаправления с HTTPS на URL-адреса HTTP.
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
Отключает обнаружение этого специального типа перенаправления. При использовании этого флага функции WinINet прозрачно разрешают перенаправление с HTTP на URL-адреса HTTPS.
INTERNET_FLAG_KEEP_CONNECTION
Использует для подключения семантику поддержания активности, если она доступна. Этот флаг необходим для microsoft Network (MSN), NT LAN Manager (NTLM) и других типов проверки подлинности.
INTERNET_FLAG_NEED_FILE
Вызывает создание временного файла, если файл не может быть кэширован.
INTERNET_FLAG_NO_AUTH
Не пытается выполнить проверку подлинности автоматически.
INTERNET_FLAG_NO_AUTO_REDIRECT
Не обрабатывает перенаправление автоматически в HttpSendRequest.
INTERNET_FLAG_NO_CACHE_WRITE
Не добавляет возвращенную сущность в кэш.
INTERNET_FLAG_NO_COOKIES
Не добавляет автоматически заголовки файлов cookie в запросы и не добавляет возвращенные файлы cookie в базу данных cookie.
INTERNET_FLAG_NO_UI
Отключает диалоговое окно cookie.
INTERNET_FLAG_PRAGMA_NOCACHE
Принудительно разрешает запрос сервером-источником, даже если на прокси-сервере существует кэшированная копия.
INTERNET_FLAG_RELOAD
Принудительное скачивание запрошенного файла, объекта или списка каталога с исходного сервера, а не из кэша.
INTERNET_FLAG_RESYNCHRONIZE
Перезагружает http-ресурсы, если ресурс был изменен с момента последнего скачивания. Все ресурсы FTP перезагружаются.

Windows XP и Windows Server 2003 R2 и более ранние версии: Ресурсы Gopher также перезагружаются.

INTERNET_FLAG_SECURE
Использует безопасную семантику транзакций. Это означает использование технологии SSL/PCT и имеет смысл только в HTTP-запросах.

[in] dwContext

Указатель на переменную, содержащую определяемое приложением значение, которое связывает эту операцию с любыми данными приложения.

Возвращаемое значение

Возвращает дескриптор HTTP-запроса в случае успешного выполнения или значение NULL в противном случае. Чтобы получить расширенные сведения об ошибке, вызовите Метод GetLastError.

Комментарии

Функция HttpOpenRequest создает новый дескриптор HTTP-запроса и сохраняет указанные параметры в этом дескрипторе. Дескриптор HTTP-запроса содержит запрос, отправляемый на HTTP-сервер, и содержит все заголовки RFC822/MIME/HTTP, отправляемые как часть запроса.

Если указан глагол, отличный от GET или POST, HttpOpenRequest автоматически задает INTERNET_FLAG_NO_CACHE_WRITE и INTERNET_FLAG_RELOAD для запроса.

При использовании Microsoft Internet Обозреватель 5 и более поздних версий, если для параметра lpszVerb задано значение "HEAD", заголовок Content-Length игнорируется в ответах от серверов HTTP/1.1.

В Windows 7, Windows Server 2008 R2 и более поздних версиях параметр lpszVersion переопределяется параметрами internet Обозреватель. EnableHttp1_1 — это значение реестра hKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE, управляемое параметрами браузера, установленными в Обозреватель Интернета для системы. Значение EnableHttp1_1 по умолчанию равно 1. Функция HttpOpenRequest обновляет любую версию HTTP меньше 1.1 до ВЕРСИИ HTTP 1.1, если EnableHttp1_1 имеет значение 1.

После завершения работы вызывающего приложения с помощью дескриптора HINTERNET , возвращаемого HttpOpenRequest, его необходимо закрыть с помощью функции InternetCloseHandle .

Примечание Если запрос отправляется в асинхронном режиме (параметр dwFlagsinternetOpen указывает INTERNET_FLAG_ASYNC), а параметр dwContext равен нулю (INTERNET_NO_CALLBACK), функция обратного вызова, заданная с параметром InternetSetStatusCallback для дескриптора запроса, не вызывается, однако вызов по-прежнему будет выполняться в асинхронном режиме.

Как и все другие аспекты API WinINet, эту функцию нельзя безопасно вызывать из DllMain или конструкторов и деструкторов глобальных объектов.

Примечание WinINet не поддерживает реализации сервера. Кроме того, его не следует использовать из службы. Для серверных реализаций или служб используйте службы Microsoft Windows HTTP (WinHTTP).
 

Примечание

Заголовок wininet.h определяет HttpOpenRequest как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header wininet.h
Библиотека Wininet.lib
DLL Wininet.dll

См. также раздел

Сеансы HTTP

Функции WinINet