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 |
---|---|
|
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.
|
|
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.
|
|
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. |
|
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. |
|
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.
Nota Esta marca es compatible. |
|
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 |
---|---|
|
Uno o varios de los parámetros proporcionados están en un formato inutilizable. |
|
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.
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 |