Función HttpSendResponseEntityBody (http.h)

La función HttpSendResponseEntityBody envía datos de cuerpo de entidad asociados a una respuesta HTTP.

Sintaxis

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

Identificador de la cola de solicitudes desde la que se recuperó la solicitud especificada. Se crea una cola de solicitudes y se devuelve su identificador mediante una llamada a la función HttpCreateRequestQueue .

Windows Server 2003 con SP1 y Windows XP con SP2: El identificador de la cola de solicitudes se crea mediante la función HttpCreateHttpHandle .

[in] RequestId

Identificador de la solicitud HTTP a la que corresponde esta respuesta. Este valor se devuelve en el miembro RequestId de la estructura HTTP_REQUEST mediante una llamada a la función HttpReceiveHttpRequest . No puede ser HTTP_NULL_ID.

[in] Flags

Parámetro que puede incluir uno de los siguientes valores de marca mutuamente excluyentes.

Marcas Significado
HTTP_SEND_RESPONSE_FLAG_DISCONNECT
La conexión de red debe desconectarse después de enviar esta respuesta, invalidando las características de conexión persistentes asociadas a la versión de HTTP en uso. Las aplicaciones deben usar esta marca para indicar el final de la entidad en los casos en los que no se usa ni la longitud del contenido ni la codificación fragmentada.
HTTP_SEND_RESPONSE_FLAG_MORE_DATA
La aplicación envía datos adicionales del cuerpo de la entidad para esta respuesta a través de una o varias llamadas posteriores a HttpSendResponseEntityBody. A continuación, la última llamada establece esta marca en cero.
HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA
Esta marca permite almacenar en búfer los datos en el kernel por respuesta.

Una aplicación debe usarla haciendo E/S sincrónica o mediante una aplicación que realiza E/S asincrónica sin más de un envío pendiente a la vez.

Las aplicaciones que usan E/S asincrónica que pueden tener más de un envío pendiente a la vez no deben usar esta marca.

Cuando se establece esta marca, también se debe usar de forma coherente en las llamadas a la función HttpSendHttpResponse .

Windows Server 2003: Esta marca no se admite. Esta marca es nueva para Windows Server 2003 con SP1.

HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING
Habilita el algoritmo de nagling TCP solo para este envío.

Windows Vista y versiones posteriores: Esta marca no se admite.

HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES
Especifica que para una solicitud de intervalo, se pasa el contenido de la respuesta completa y el autor de la llamada quiere que la API HTTP procese los intervalos de forma adecuada.
Nota Esta marca solo se admite para las respuestas a las solicitudes HTTP GET y ofrece un subconjunto limitado de funcionalidad. Las aplicaciones que requieren procesamiento de rango completo deben realizarse en modo de usuario y no confiar en HTTP.sys. Se desaconseja el uso.
 
Windows Server 2008 R2 y Windows 7 o posterior.

Nota Esta marca es compatible.

HTTP_SEND_RESPONSE_FLAG_OPAQUE
Especifica que la solicitud o respuesta no es compatible con HTTP y que todos los bytes posteriores deben tratarse como cuerpo de entidad. Las aplicaciones especifican esta marca cuando acepta una solicitud de actualización de Web Socket e informan a HTTP.sys para tratar los datos de conexión como datos opacos.

Esta marca solo se permite cuando el miembro StatusCode de pHttpResponse es 101, cambiando protocolos. HttpSendResponseEntityBody devuelve ERROR_INVALID_PARAMETER para todos los demás tipos de respuesta HTTP si se usa esta marca.

Windows 8 y versiones posteriores: se admite esta marca.

 
Precaución La combinación de ambas marcas en una sola llamada a la función HttpSendHttpResponse genera resultados no definidos.
 

[in] EntityChunkCount

Número de estructuras de la matriz a las que apunta pEntityChunks. Este recuento no puede superar los 9999.

[in] EntityChunks

Puntero a una matriz de estructuras de HTTP_DATA_CHUNK que se van a enviar como datos del cuerpo de la entidad.

[out] BytesSent

Opcional. Puntero a una variable que recibe el número, en bytes, enviado si la función funciona de forma sincrónica.

Al realizar una llamada asincrónica mediante pOverlapped, establezca pBytesSent enNULL. De lo contrario, cuando pOverlapped se establece en NULL, pBytesSent debe contener una dirección de memoria válida y no establecerse en NULL.

[in] Reserved1

Este parámetro está reservado y debe ser NULL.

[in] Reserved2

Este parámetro está reservado y debe ser cero.

[in] Overlapped

Para las llamadas asincrónicas, establezca pOverlapped para que apunte a una estructura SUPERPUESTA ; para llamadas sincrónicas, establézcalo en NULL.

Una llamada sincrónica se bloquea hasta que se envían todos los datos de respuesta especificados en el parámetro pEntityChunks , mientras que una llamada asincrónica devuelve inmediatamente ERROR_IO_PENDING y la aplicación que realiza la llamada usa los puertos getOverlappedResult o de finalización de E/S para determinar cuándo se completa la operación. Para obtener más información sobre el uso de estructuras SUPERPUESTAs para la sincronización, consulte Sincronización y entrada y salida superpuestas.

[in, optional] LogData

Puntero a la estructura HTTP_LOG_DATA utilizada para registrar la respuesta. Pase un puntero a la estructura HTTP_LOG_FIELDS_DATA y consértelo a PHTTP_LOG_DATA.

Tenga en cuenta que, incluso cuando el registro está habilitado en un grupo de direcciones URL o en una sesión de servidor, la respuesta no se registrará a menos que la aplicación suministre la estructura de datos de los campos de registro.

Windows Server 2003 y Windows XP con SP2: Este parámetro está reservado y debe ser NULL.

Windows Vista y Windows Server 2008: Este parámetro es nuevo para Windows Vista y Windows Server 2008

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es NO_ERROR.

Si la función se usa de forma asincrónica, un valor devuelto de ERROR_IO_PENDING indica que la siguiente solicitud aún no está lista y se recupera más adelante a través de mecanismos de finalización de E/S superpuestos normales.

Si se produce un error en la función, el valor devuelto es uno de los siguientes códigos de error.

Valor Significado
ERROR_INVALID_PARAMETER
Uno o varios de los parámetros proporcionados están en forma inutilizable.
ERROR_BAD_COMMAND
Hay una llamada pendiente a HttpSendHttpResponse o HttpSendResponseEntityBody que tiene el mismo RequestId.
Otros
Código de error del sistema definido en WinError.h.

Comentarios

Si no se incluye ningún encabezado de longitud de contenido ni encabezado de codificación transfer en los encabezados de respuesta, la aplicación debe indicar el final de la respuesta cerrando explícitamente la conexión mediante la marca HTTP_SEND_RESPONSE_DISCONNECT .

NotaHttpSendResponseEntityBody (o HttpSendHttpResponse) y HttpSendResponseEntityBody no deben llamarse simultáneamente desde subprocesos diferentes en el mismo RequestId.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista, Windows XP con SP2 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado http.h
Library Httpapi.lib
Archivo DLL Httpapi.dll

Consulte también

Funciones de la API de servidor HTTP versión 1.0

HTTP_DATA_CHUNK

HttpReceiveHttpRequest

HttpReceiveRequestEntityBody

HttpSendHttpResponse