Функция 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

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

HTTP_REQUEST_HEADERS

HTTP_VERB

HttpCreateRequestQueue