Função HttpDeclarePush (http.h)

Declara uma relação de recurso para sub-recurso a ser usada para um push de servidor HTTP. HTTP.sys executará um push de servidor HTTP 2.0 para o recurso especificado, se o protocolo, a conexão, o cliente e as políticas subjacentes permitirem a operação de push.

Sintaxe

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
);

Parâmetros

[in] RequestQueueHandle

O identificador para uma fila de solicitação HTTP.sys que a função HttpCreateRequestQueue retornou.

[in] RequestId

O identificador opaco da solicitação que está declarando a operação de push. A solicitação deve ser do identificador de fila especificado.

[in] Verb

O verbo HTTP a ser usado para a operação de push. A operação de push HTTP.sys dá suporte apenas a HttpVerbGET e HttpVerbHEAD.

[in] Path

A parte do caminho da URL do recurso que está sendo enviado por push.

[in, optional] Query

A parte de consulta da URL do recurso que está sendo enviado por push. Essa cadeia de caracteres não deve incluir o ponto de interrogação à esquerda (?).

[in, optional] Headers

Os cabeçalhos de solicitação para a operação de push.

Você não deve fornecer um cabeçalho host, pois HTTP.sys gera automaticamente as informações corretas do Host. HTTP.sys não dá suporte a operações de push entre origens, portanto, HTTP.sys impõe e gera informações de host que correspondem à solicitação original iniciada pelo cliente.

A solicitação push não tem permissão para ter um corpo de entidade, portanto, você não pode incluir um cabeçalho Content-Length diferente de zero ou qualquer cabeçalho Transfer-Encoding.

Retornar valor

Se a função for bem-sucedida, ela retornará NO_ERROR.

Se a função falhar, ela retornará um código de erro do sistema definido em WinError.h.

Comentários

Você deve chamar HttpDeclarePush antes de enviar qualquer bytes de resposta que faça com que o cliente descubra o sub-recurso em si. A falha ao observar essa ordem resulta em uma corrida entre o servidor que está enviando o recurso por push e o cliente que está recuperando os recursos, o que pode desperdiçar largura de banda. O aplicativo de servidor só deve usar HttpDeclarePush para enviar por push recursos que o aplicativo de servidor é altamente confiante são necessários e ainda não armazenados em cache pelo cliente. Se o aplicativo de servidor efetuar push de outros recursos, poderá ocorrer o uso desnecessário da largura de banda e da CPU.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2016 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho http.h
Biblioteca Httpapi.lib
DLL Httpapi.dll

Confira também

HTTP_REQUEST_HEADERS

HTTP_VERB

HttpCreateRequestQueue