Функция HttpDeclarePush (http.h)
Объявляет связь "ресурс — подресурс", используемую для отправки HTTP-сервера. HTTP.sys затем выполняет отправку сервера HTTP 2.0 для заданного ресурса, если базовый протокол, подключение, клиент и политики разрешают операцию отправки.
Синтаксис
HTTPAPI_LINKAGE ULONG HttpDeclarePush(
[in] HANDLE RequestQueueHandle,
[in] HTTP_REQUEST_ID RequestId,
[in] HTTP_VERB Verb,
[in] PCWSTR Path,
[in, optional] PCSTR Query,
[in, optional] PHTTP_REQUEST_HEADERS Headers
);
Параметры
[in] RequestQueueHandle
Дескриптор HTTP.sys очереди запросов, возвращенной функцией HttpCreateRequestQueue .
[in] RequestId
Непрозрачный идентификатор запроса, объявляющего операцию отправки. Запрос должен быть от указанного дескриптора очереди.
[in] Verb
HTTP-команда, используемая для операции отправки. Операция отправки HTTP.sys поддерживает только HttpVerbGET и HttpVerbHEAD.
[in] Path
Часть пути URL-адреса для отправляемого ресурса.
[in, optional] Query
Часть запроса URL-адреса для отправляемого ресурса. Эта строка не должна включать в себя вопросительный знак (?).
[in, optional] Headers
Заголовки запроса для операции отправки.
Не следует предоставлять заголовок узла, так как HTTP.sys автоматически создает правильные сведения об узле. HTTP.sys не поддерживает операции отправки между источниками, поэтому HTTP.sys принудительно применяет и создает сведения об узле, соответствующие исходному запросу, инициированному клиентом.
Push-запрос не может содержать тело сущности, поэтому нельзя включать ненулевой заголовок Content-Length или любой Transfer-Encoding заголовок.
Возвращаемое значение
Если функция выполняется успешно, она возвращает NO_ERROR.
Если функция завершается сбоем, она возвращает код системной ошибки , определенный в WinError.h.
Комментарии
Прежде чем отправлять байты ответа, необходимо вызвать HttpDeclarePush , чтобы клиент обнаружил сам подресурс. Несоблюдение этого порядка приводит к гонке между сервером, который отправляет ресурс, и клиентом, который извлекает ресурсы, что может тратить пропускную способность. Серверное приложение должно использовать httpDeclarePush только для отправки ресурсов, которые серверное приложение с высокой степенью уверенности требуются и еще не кэшируются клиентом. Если серверное приложение отправляет другие ресурсы, может возникнуть ненужное использование пропускной способности и ЦП.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 [только классические приложения] |
Минимальная версия сервера | Windows Server 2016 [только классические приложения] |
Целевая платформа | Windows |
Header | http.h |
Библиотека | Httpapi.lib |
DLL | Httpapi.dll |