Función HttpSendHttpResponse (http.h)

La función HttpSendHttpResponse envía una respuesta HTTP a la solicitud HTTP especificada.

Sintaxis

HTTPAPI_LINKAGE ULONG HttpSendHttpResponse(
  [in]           HANDLE             RequestQueueHandle,
  [in]           HTTP_REQUEST_ID    RequestId,
  [in]           ULONG              Flags,
  [in]           PHTTP_RESPONSE     HttpResponse,
  [in, optional] PHTTP_CACHE_POLICY CachePolicy,
  [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 su identificador devuelto por 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 . Este valor no puede ser HTTP_NULL_ID.

[in] Flags

Este parámetro puede ser una combinación de algunos de los siguientes valores de marca. Los que son mutuamente excluyentes se marcan en consecuencia.

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.
Precaución La combinación de HTTP_SEND_RESPONSE_FLAG_DISCONNECT y HTTP_SEND_RESPONSE_FLAG_MORE_DATA en una sola llamada a la función HttpSendHttpResponse genera resultados no definidos.
 
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. La última llamada que envía datos del cuerpo de la entidad establece esta marca en cero.
Precaución La combinación de HTTP_SEND_RESPONSE_FLAG_DISCONNECT y HTTP_SEND_RESPONSE_FLAG_MORE_DATA en una sola llamada a la función HttpSendHttpResponse genera resultados no definidos.
 
HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA
Esta marca permite almacenar en búfer los datos del 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 y 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 HttpSendResponseEntityBody .

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 Server 2003 con SP1 y Windows XP con SP2: 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 solicitudes HTTP GET y ofrece un subconjunto limitado de funcionalidades. Las aplicaciones que requieren procesamiento de intervalo completo deben realizarla en modo de usuario y no confiar en HTTP.sys. Se desaconseja su uso.
 
Windows Server 2008 R2 y Windows 7 o posterior.

Nota Esta marca es compatible.

HTTP_SEND_RESPONSE_FLAG_OPAQUE
Especifica que la solicitud/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 informa 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. HttpSendHttpResponse devuelve ERROR_INVALID_PARAMETER para todos los demás tipos de respuesta HTTP si se usa esta marca.

Windows 8 y versiones posteriores: Esta marca es compatible.

[in] HttpResponse

Puntero a una estructura de HTTP_RESPONSE que define la respuesta HTTP.

[in, optional] CachePolicy

Puntero a la estructura HTTP_CACHE_POLICY utilizada para almacenar en caché la respuesta.

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

[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, establezca en NULL.

Una llamada sincrónica se bloquea hasta que se envían todos los datos de respuesta especificados en el parámetro pHttpResponse , mientras que una llamada asincrónica devuelve inmediatamente ERROR_IO_PENDING y la aplicación que realiza la llamada usa puertos de finalización de E/S o GetOverlappedResult 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, vea 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 lo convierta en 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 especifique 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 realiza correctamente, la función devuelve 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, devuelve uno de los siguientes códigos de error.

Valor Significado
ERROR_INVALID_PARAMETER
Uno o varios de los parámetros proporcionados están en un formato inutilizable.
Otros
Código de error del sistema definido en WinError.h.

Comentarios

La función HttpSendHttpResponse se usa para crear y enviar un encabezado de respuesta, y la función HttpSendResponseEntityBody se puede usar para enviar datos del cuerpo de la entidad según sea necesario.

Si no se incluye un encabezado de longitud de contenido ni un encabezado de codificación de transferencia con la respuesta, la aplicación debe indicar el final de la respuesta cerrando explícitamente la conexión mediante la marca HTTP_SEND_RESPONSE_DISCONNECT .

Si una aplicación especifica un encabezado "Server:" en una respuesta, mediante el identificador HttpHeaderServer de la estructura HTTP_KNOWN_HEADER , ese valor especificado se coloca como la primera parte del encabezado, seguido de un espacio y, a continuación, "Microsoft-HTTPAPI/1.0". Si no se especifica ningún encabezado de servidor, HttpSendHttpResponse proporciona "Microsoft-HTTPAPI/1.0" como encabezado de servidor.

Nota La función HttpSendHttpResponse y HttpSendResponseEntityBody no se deben llamar simultáneamente desde subprocesos diferentes en el mismo RequestId.
 

Requisitos

   
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_RESPONSE

HttpReceiveHttpRequest

HttpReceiveRequestEntityBody

HttpSendResponseEntityBody