Função HttpSendResponseEntityBody (http.h)

A função HttpSendResponseEntityBody envia dados de entidade-corpo associados a uma resposta HTTP.

Sintaxe

HTTPAPI_LINKAGE ULONG HttpSendResponseEntityBody(
  [in]           HANDLE           RequestQueueHandle,
  [in]           HTTP_REQUEST_ID  RequestId,
  [in]           ULONG            Flags,
  [in]           USHORT           EntityChunkCount,
  [in]           PHTTP_DATA_CHUNK EntityChunks,
  [out]          PULONG           BytesSent,
  [in]           PVOID            Reserved1,
  [in]           ULONG            Reserved2,
  [in]           LPOVERLAPPED     Overlapped,
  [in, optional] PHTTP_LOG_DATA   LogData
);

Parâmetros

[in] RequestQueueHandle

Um identificador para a fila de solicitação da qual a solicitação especificada foi recuperada. Uma fila de solicitação é criada e seu identificador retornado por uma chamada para a função HttpCreateRequestQueue .

Windows Server 2003 com SP1 e Windows XP com SP2: O identificador para a fila de solicitação é criado pela função HttpCreateHttpHandle .

[in] RequestId

Um identificador da solicitação HTTP à qual essa resposta corresponde. Esse valor é retornado no membro RequestId da estrutura HTTP_REQUEST por uma chamada para a função HttpReceiveHttpRequest . Não pode ser HTTP_NULL_ID.

[in] Flags

Um parâmetro que pode incluir um dos seguintes valores de sinalizador mutuamente exclusivos.

Flags Significado
HTTP_SEND_RESPONSE_FLAG_DISCONNECT
A conexão de rede deve ser desconectada após o envio dessa resposta, substituindo todos os recursos de conexão persistente associados à versão do HTTP em uso. Os aplicativos devem usar esse sinalizador para indicar o fim da entidade nos casos em que nem o comprimento do conteúdo nem a codificação em partes são usados.
HTTP_SEND_RESPONSE_FLAG_MORE_DATA
Dados adicionais do corpo da entidade para essa resposta são enviados pelo aplicativo por meio de uma ou mais chamadas subsequentes para HttpSendResponseEntityBody. Em seguida, a última chamada define esse sinalizador como zero.
HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA
Esse sinalizador permite o buffer de dados no kernel por resposta.

Ele deve ser usado por um aplicativo que faz E/S síncrona ou por um aplicativo que faz E/S assíncrona com não mais de um envio pendente por vez.

Aplicativos que usam E/S assíncrona que podem ter mais de um envio pendente por vez não devem usar esse sinalizador.

Quando esse sinalizador é definido, ele também deve ser usado consistentemente em chamadas para a função HttpSendHttpResponse .

Windows Server 2003: Não há suporte para esse sinalizador. Esse sinalizador é novo para o Windows Server 2003 com SP1.

HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING
Habilita o algoritmo de navegação TCP somente para este envio.

Windows Vista e posterior: Não há suporte para esse sinalizador.

HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES
Especifica que, para uma solicitação de intervalo, o conteúdo de resposta completo é passado e o chamador deseja que a API HTTP processe intervalos adequadamente.
Nota Esse sinalizador só tem suporte para respostas a solicitações HTTP GET e oferece um subconjunto limitado de funcionalidade. Os aplicativos que exigem processamento de intervalo completo devem executá-lo no modo de usuário e não depender de HTTP.sys. Seu uso é desencorajado.
 
Windows Server 2008 R2 e Windows 7 ou posterior.

Nota Há suporte para esse sinalizador.

HTTP_SEND_RESPONSE_FLAG_OPAQUE
Especifica que a solicitação/resposta não está em conformidade com HTTP e todos os bytes subsequentes devem ser tratados como entidade-corpo. Os aplicativos especificam esse sinalizador quando ele está aceitando uma solicitação de atualização do Web Socket e informando HTTP.sys para tratar os dados de conexão como dados opacos.

Esse sinalizador só é permitido quando o membro StatusCode do pHttpResponse é 101, alternando protocolos. HttpSendResponseEntityBody retornará ERROR_INVALID_PARAMETER para todos os outros tipos de resposta HTTP se esse sinalizador for usado.

Windows 8 e posteriores: há suporte para esse sinalizador.

 
Cuidado A combinação de ambos os sinalizadores em uma única chamada à função HttpSendHttpResponse produz resultados indefinidos.
 

[in] EntityChunkCount

Várias estruturas na matriz apontadas por pEntityChunks. Essa contagem não pode exceder 9999.

[in] EntityChunks

Um ponteiro para uma matriz de HTTP_DATA_CHUNK estruturas a serem enviadas como dados de entidade-corpo.

[out] BytesSent

Opcional. Um ponteiro para uma variável que recebe o número, em bytes, enviado se a função opera de forma síncrona.

Ao fazer uma chamada assíncrona usando pOverlapped, defina pBytesSent como NULL. Caso contrário, quando pOverlapped é definido como NULL, pBytesSent deve conter um endereço de memória válido e não ser definido como NULL.

[in] Reserved1

Esse parâmetro é reservado e deve ser NULL.

[in] Reserved2

Esse parâmetro é reservado e precisa ser zero.

[in] Overlapped

Para chamadas assíncronas, defina pOverlapped para apontar para uma estrutura OVERLAPPED ; para chamadas síncronas, defina-a como NULL.

Uma chamada síncrona bloqueia até que todos os dados de resposta especificados no parâmetro pEntityChunks sejam enviados , enquanto uma chamada assíncrona retorna imediatamente ERROR_IO_PENDING e o aplicativo de chamada usa as portas de conclusão GetOverlappedResult ou E/S para determinar quando a operação é concluída. Para obter mais informações sobre como usar estruturas OVERLAPPED para sincronização, consulte Sincronização e entrada e saída sobrepostas.

[in, optional] LogData

Um ponteiro para a estrutura de HTTP_LOG_DATA usada para registrar a resposta em log. Passe um ponteiro para a estrutura HTTP_LOG_FIELDS_DATA e converta-o em PHTTP_LOG_DATA.

Lembre-se de que, mesmo quando o registro em log estiver habilitado em um grupo de URL ou sessão de servidor, a resposta não será registrada, a menos que o aplicativo forneça a estrutura de dados dos campos de log.

Windows Server 2003 e Windows XP com SP2: Esse parâmetro é reservado e deve ser NULL.

Windows Vista e Windows Server 2008: Esse parâmetro é novo para Windows Vista e Windows Server 2008

Retornar valor

Se a função for bem-sucedida, o valor retornado será NO_ERROR.

Se a função for usada de forma assíncrona, um valor retornado de ERROR_IO_PENDING indicará que a próxima solicitação ainda não está pronta e será recuperada posteriormente por meio de mecanismos normais de conclusão de E/S sobrepostos.

Se a função falhar, o valor retornado será um dos seguintes códigos de erro.

Valor Significado
ERROR_INVALID_PARAMETER
Um ou mais dos parâmetros fornecidos estão em uma forma inutilizável.
ERROR_BAD_COMMAND
Há uma chamada pendente para HttpSendHttpResponse ou HttpSendResponseEntityBody com a mesma RequestId.
Outros
Um código de erro do sistema definido em WinError.h.

Comentários

Se nem um cabeçalho de comprimento de conteúdo nem um cabeçalho de codificação de transferência estiverem incluídos nos cabeçalhos de resposta, o aplicativo deverá indicar o final da resposta fechando explicitamente a conexão usando o sinalizador HTTP_SEND_RESPONSE_DISCONNECT .

ObservaçãoHttpSendResponseEntityBody (ou HttpSendHttpResponse) e HttpSendResponseEntityBody não devem ser chamados simultaneamente de threads diferentes no mesmo RequestId.
 

Requisitos

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

Confira também

Funções da API do Servidor HTTP versão 1.0

HTTP_DATA_CHUNK

HttpReceiveHttpRequest

HttpReceiveRequestEntityBody

HttpSendHttpResponse