Funzione WinHttpOpenRequest (winhttp.h)
La funzione WinHttpOpenRequest crea un handle di richiesta HTTP.
Sintassi
WINHTTPAPI HINTERNET WinHttpOpenRequest(
[in] HINTERNET hConnect,
[in] LPCWSTR pwszVerb,
[in] LPCWSTR pwszObjectName,
[in] LPCWSTR pwszVersion,
[in] LPCWSTR pwszReferrer,
[in] LPCWSTR *ppwszAcceptTypes,
[in] DWORD dwFlags
);
Parametri
[in] hConnect
Handle di connessione HINTERNET a una sessione HTTP restituita da WinHttpConnect.
[in] pwszVerb
Puntatore a una stringa contenente il verbo HTTP da usare nella richiesta. Se questo parametro è NULL, la funzione usa GET come verbo HTTP. Nota Questa stringa deve essere tutta maiuscola. Molti server considerano i verbi HTTP come distinzione tra maiuscole e minuscole e le richieste di Internet Engineering Task Force (IETF) per i commenti (RFC) includono questi verbi usando solo caratteri maiuscoli.
[in] pwszObjectName
Puntatore a una stringa contenente il nome della risorsa di destinazione del verbo HTTP specificato. Si tratta in genere di un nome file, di un modulo eseguibile o di un identificatore di ricerca.
[in] pwszVersion
Puntatore a una stringa contenente la versione HTTP. Se questo parametro è NULL, la funzione usa HTTP/1.1.
[in] pwszReferrer
Puntatore a una stringa che specifica l'URL del documento da cui è stato ottenuto l'URL nella richiesta pwszObjectName . Se questo parametro è impostato su WINHTTP_NO_REFERER, non viene specificato alcun documento di riferimento.
[in] ppwszAcceptTypes
Puntatore a una matrice con terminazione null dei puntatori di stringa che specifica i tipi di supporto accettati dal client. Se questo parametro è impostato su WINHTTP_DEFAULT_ACCEPT_TYPES, nessun tipo viene accettato dal client. In genere, i server gestiscono una mancanza di tipi accettati come indicazione che il client accetta solo documenti di tipo "text/*"; ovvero solo documenti di testo, senza immagini o altri file binari. Per un elenco di tipi di supporti validi, vedere Tipi di supporti definiti da IANA in http://www.iana.org/assignments/media-types/.
[in] dwFlags
Valore intero lungo senza segno contenente i valori del flag Internet. Questo può essere uno o più dei valori seguenti:
Valore restituito
Restituisce un handle di richiesta HTTP valido se ha esito positivo o NULL in caso contrario. Per informazioni sull'errore estese, chiamare GetLastError. Tra i codici di errore restituiti sono i seguenti.
Codice di errore | Descrizione |
---|---|
|
Il tipo di handle fornito non è corretto per questa operazione. |
|
Si è verificato un errore interno. |
|
L'URL non è valido. |
|
L'operazione è stata annullata, in genere perché l'handle in cui è stata eseguita la richiesta è stata chiusa prima del completamento dell'operazione. |
|
L'URL ha specificato uno schema diverso da "http:" o "https:". |
|
Memoria insufficiente per completare l'operazione richiesta. (Codice errore di Windows) |
Commenti
Il valore restituito indica l'esito positivo o negativo. Per informazioni dettagliate sull'errore, chiamare GetLastError.
La funzione WinHttpOpenRequest crea un nuovo handle di richiesta HTTP e archivia i parametri specificati in tale handle. Un handle di richiesta HTTP contiene una richiesta di invio a un server HTTP e contiene tutte le intestazioni RFC822/MIME/HTTP da inviare come parte della richiesta.
Se pwszVerb è impostato su "HEAD", l'intestazione Content-Length viene ignorata.
Se una funzione di callback di stato è stata installata con WinHttpSetStatusCallback, una notifica di WINHTTP_CALLBACK_STATUS_HANDLE_CREATED indica che WinHttpOpenRequest ha creato un handle di richiesta.
Al termine dell'applicazione chiamante, l'handle HINTERNET restituito da WinHttpOpenRequest deve essere chiuso usando la funzione WinHttpCloseHandle .
Esempio
In questo esempio viene illustrato come ottenere un handle HINTERNET , aprire una sessione HTTP, creare un'intestazione di richiesta e inviare tale intestazione al server.
BOOL bResults = FALSE;
HINTERNET hSession = NULL,
hConnect = NULL,
hRequest = NULL;
// Use WinHttpOpen to obtain a session handle.
hSession = WinHttpOpen( L"A WinHTTP Example Program/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
// Specify an HTTP server.
if (hSession)
hConnect = WinHttpConnect( hSession, L"www.wingtiptoys.com",
INTERNET_DEFAULT_HTTP_PORT, 0);
// Create an HTTP Request handle.
if (hConnect)
hRequest = WinHttpOpenRequest( hConnect, L"PUT",
L"/writetst.txt",
NULL, WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
0);
// Send a Request.
if (hRequest)
bResults = WinHttpSendRequest( hRequest,
WINHTTP_NO_ADDITIONAL_HEADERS,
0, WINHTTP_NO_REQUEST_DATA, 0,
0, 0);
// PLACE ADDITIONAL CODE HERE.
// Report any errors.
if (!bResults)
printf( "Error %d has occurred.\n", GetLastError());
// Close any open handles.
if (hRequest) WinHttpCloseHandle(hRequest);
if (hConnect) WinHttpCloseHandle(hConnect);
if (hSession) WinHttpCloseHandle(hSession);
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP, Windows 2000 Professional con SP3 [solo app desktop] |
Server minimo supportato | Windows Server 2003, Windows 2000 Server con SP3 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winhttp.h |
Libreria | Winhttp.lib |
DLL | Winhttp.dll |
Componente ridistribuibile | WinHTTP 5.0 e Internet Explorer 5.01 o versione successiva in Windows XP e Windows 2000. |