Funzione HttpSendHttpResponse (http.h)

La funzione HttpSendHttpResponse invia una risposta HTTP alla richiesta HTTP specificata.

Sintassi

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

Parametri

[in] RequestQueueHandle

Handle alla coda della richiesta da cui è stata recuperata la richiesta specificata. Viene creata una coda di richieste e il relativo handle restituito da una chiamata alla funzione HttpCreateRequestQueue .

Windows Server 2003 con SP1 e Windows XP con SP2: L'handle della coda della richiesta viene creato dalla funzione HttpCreateHttpHandle .

[in] RequestId

Identificatore della richiesta HTTP a cui corrisponde questa risposta. Questo valore viene restituito nel membro RequestId della struttura HTTP_REQUEST da una chiamata alla funzione HttpReceiveHttpRequest . Questo valore non può essere HTTP_NULL_ID.

[in] Flags

Questo parametro può essere una combinazione di alcuni dei valori di flag seguenti. Quelli che si escludono a vicenda sono contrassegnati di conseguenza.

Flags Significato
HTTP_SEND_RESPONSE_FLAG_DISCONNECT
La connessione di rete deve essere disconnessa dopo l'invio di questa risposta, sostituendo eventuali funzionalità di connessione persistenti associate alla versione di HTTP in uso.
Attenzione La combinazione di HTTP_SEND_RESPONSE_FLAG_DISCONNECT e HTTP_SEND_RESPONSE_FLAG_MORE_DATA in una singola chiamata alla funzione HttpSendHttpResponse genera risultati non definiti.
 
HTTP_SEND_RESPONSE_FLAG_MORE_DATA
I dati aggiuntivi del corpo dell'entità per questa risposta vengono inviati dall'applicazione tramite una o più chiamate successive a HttpSendResponseEntityBody. L'ultima chiamata che invia i dati del corpo dell'entità imposta quindi questo flag su zero.
Attenzione La combinazione di HTTP_SEND_RESPONSE_FLAG_DISCONNECT e HTTP_SEND_RESPONSE_FLAG_MORE_DATA in una singola chiamata alla funzione HttpSendHttpResponse genera risultati non definiti.
 
HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA
Questo flag consente il buffer dei dati nel kernel in base alla risposta.

Deve essere usato da un'applicazione che esegue operazioni di I/O sincrone o da un'applicazione che esegue operazioni di I/O asincrone senza più di un invio in sospeso alla volta.

Le applicazioni che usano l'I/O asincrona e che possono avere più di un invio in sospeso alla volta non devono usare questo flag.

Quando questo flag è impostato, deve essere usato anche in modo coerente nelle chiamate alla funzione HttpSendResponseEntityBody .

Windows Server 2003: Questo flag non è supportato. Questo flag è nuovo per Windows Server 2003 con SP1.

HTTP_SEND_RESPONSE_FLAG_ENABLE_NAGLING
Abilita l'algoritmo TCP nagling solo per questo invio.

Windows Server 2003 con SP1 e Windows XP con SP2: Questo flag non è supportato.

HTTP_SEND_RESPONSE_FLAG_PROCESS_RANGES
Specifica che per una richiesta di intervallo, il contenuto completo della risposta viene passato e il chiamante vuole che l'API HTTP venga elaborata in modo appropriato.
Nota Questo flag è supportato solo per le risposte alle richieste HTTP GET e offre un subset limitato di funzionalità. Le applicazioni che richiedono l'elaborazione completa devono eseguirla in modalità utente e non si basano su HTTP.sys. Il suo utilizzo è sconsigliato.
 
Windows Server 2008 R2 e Windows 7 o versioni successive.

Nota Questo flag è supportato.

HTTP_SEND_RESPONSE_FLAG_OPAQUE
Specifica che la richiesta/risposta non è conforme a HTTP e tutti i byte successivi devono essere considerati come corpo dell'entità. Le applicazioni specificano questo flag quando accetta una richiesta di aggiornamento di Web Socket e informando HTTP.sys di trattare i dati di connessione come dati opachi.

Questo flag è consentito solo quando il membro StatusCode di pHttpResponse è 101, passando i protocolli. HttpSendHttpResponse restituisceERROR_INVALID_PARAMETER per tutti gli altri tipi di risposta HTTP se viene usato questo flag.

Windows 8 e versioni successive: Questo flag è supportato.

[in] HttpResponse

Puntatore a una struttura HTTP_RESPONSE che definisce la risposta HTTP.

[in, optional] CachePolicy

Puntatore alla struttura di HTTP_CACHE_POLICY utilizzata per memorizzare nella cache la risposta.

Windows Server 2003 con SP1 e Windows XP con SP2: Questo parametro è riservato e deve essere NULL.

[out] BytesSent

Facoltativa. Puntatore a una variabile che riceve il numero, in byte, inviato se la funzione opera in modo sincrono.

Quando si esegue una chiamata asincrona usando pOverlapped, impostare pBytesSent su NULL. In caso contrario, quando pOverlapped è impostato su NULL, pBytesSent deve contenere un indirizzo di memoria valido e non essere impostato su NULL.

[in] Reserved1

Questo parametro è riservato e deve essere NULL.

[in] Reserved2

Questo parametro è riservato e deve essere zero.

[in] Overlapped

Per le chiamate asincrone, impostare pOverlapped per puntare a una struttura OVERLAPPED ; per le chiamate sincrone, impostare su NULL.

Una chiamata sincrona blocca fino a quando non vengono inviati tutti i dati di risposta specificati nel parametro pHttpResponse , mentre una chiamata asincrona restituisce immediatamente ERROR_IO_PENDING e l'applicazione chiamante usa quindi porte di completamento GetOverlappedResult o I/O per determinare quando l'operazione viene completata. Per altre informazioni sull'uso di strutture OVERLAPPED per la sincronizzazione, vedere Sincronizzazione e output sovrapposti.

[in, optional] LogData

Puntatore alla struttura HTTP_LOG_DATA utilizzata per registrare la risposta. Passare un puntatore alla struttura HTTP_LOG_FIELDS_DATA e eseguirne il cast in PHTTP_LOG_DATA.

Tenere presente che anche quando la registrazione è abilitata in una sessione del gruppo di URL o del server, la risposta non verrà registrata a meno che l'applicazione non fornisca la struttura dei campi di log.

Windows Server 2003 e Windows XP con SP2: Questo parametro è riservato e deve essere NULL.

Windows Vista e Windows Server 2008: Questo parametro è nuovo per Windows Vista e Windows Server 2008

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce NO_ERROR.

Se la funzione viene usata in modo asincrono, un valore restituito di ERROR_IO_PENDING indica che la richiesta successiva non è ancora pronta e viene recuperata in seguito tramite normali meccanismi di completamento di I/O sovrapposti.

Se la funzione ha esito negativo, restituisce uno dei codici di errore seguenti.

Valore Significato
ERROR_INVALID_PARAMETER
Uno o più dei parametri forniti sono in un formato inutilizzabile.
Altri
Codice di errore di sistema definito in WinError.h.

Commenti

La funzione HttpSendHttpResponse viene usata per creare e inviare un'intestazione di risposta e la funzione HttpSendResponseEntityBody può essere usata per inviare i dati del corpo dell'entità in base alle esigenze.

Se non è inclusa né un'intestazione di lunghezza contenuto né un'intestazione di codifica di trasferimento con la risposta, l'applicazione deve indicare la fine della risposta chiudendo in modo esplicito la connessione usando il flag di HTTP_SEND_RESPONSE_DISCONNECT .

Se un'applicazione specifica un'intestazione "Server:" in una risposta, usando l'identificatore HttpHeaderServer nella struttura HTTP_KNOWN_HEADER , tale valore specificato viene inserito come prima parte dell'intestazione, seguito da uno spazio e quindi "Microsoft-HTTPAPI/1.0". Se non viene specificata alcuna intestazione del server, HttpSendHttpResponse fornisce "Microsoft-HTTPAPI/1.0" come intestazione del server.

Nota La funzione HttpSendHttpResponse e HttpSendResponseEntityBody non deve essere chiamata simultaneamente da thread diversi nello stesso RequestId.
 

Requisiti

   
Client minimo supportato Windows Vista, Windows XP con SP2 [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione http.h
Libreria Httpapi.lib
DLL Httpapi.dll

Vedi anche

Funzioni API SERVER HTTP versione 1.0

HTTP_RESPONSE

HttpReceiveHttpRequest

HttpReceiveRequestEntityBody

HttpSendResponseEntityBody