Поделиться через


Функция 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-terminated, содержащую http-команду, используемую в запросе. Если этот параметр null, функция использует GET в качестве команды HTTP.

[in] lpszObjectName

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

[in] lpszVersion

Указатель на строку null-terminated, содержащую версию HTTP, используемую в запросе. Параметры в Internet Explorer переопределяют значение, указанное в этом параметре.

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

Ценность Значение
HTTP/1.0
HTTP версии 1.0
HTTP/1.1
HTTP версии 1.1

[in] lpszReferrer

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

[in] lplpszAcceptTypes

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

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

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

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

[in] dwFlags

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

Ценность Значение
INTERNET_FLAG_CACHE_IF_NET_FAIL
Возвращает ресурс из кэша, если сетевой запрос ресурса завершается сбоем из-за ERROR_INTERNET_CONNECTION_RESET (подключение к серверу было сброшено) или ERROR_INTERNET_CANNOT_CONNECT (попытка подключения к серверу завершилась ошибкой).
INTERNET_FLAG_HYPERLINK
Принудивает перезагрузку, если срок действия истекает, и время LastModified не возвращается с сервера при определении необходимости перезагрузки элемента из сети.
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/PIT и используется только в 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 Explorer 5 и более поздних версий, если lpszVerb имеет значение HEAD, заголовок Content-Length игнорируется на ответах с серверов HTTP/1.1.

В Windows 7 Windows Server 2008 R2 и более поздних версиях параметр lpszVersion переопределяется параметрами Internet Explorer. EnableHttp1_1 — это значение реестра в разделе HKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE, контролируемые параметрами Интернета в Internet Explorer для системы. Значение EnableHttp1_1 по умолчанию равно 1. Функция httpOpenRequest обновляет любую версию HTTP менее 1.1 до HTTP версии 1.1, если EnableHttp1_1 имеет значение 1.

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

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

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

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

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка wininet.h
библиотеки Wininet.lib
DLL Wininet.dll

См. также

сеансы HTTP

функций WinINet