Metodo IWinHttpRequest::SetRequestHeader
Il metodo SetRequestHeader aggiunge, modifica o elimina un'intestazione di richiesta HTTP.
Sintassi
HRESULT SetRequestHeader(
[in] BSTR Header,
[in] BSTR Value
);
Parametri
-
Intestazione [in]
-
Specifica il nome dell'intestazione da impostare, ad esempio "depth". Questo parametro non deve contenere due punti e deve essere il testo effettivo dell'intestazione HTTP.
-
Valore [in]
-
Specifica il valore dell'intestazione, ad esempio "infinity".
Valore restituito
Il valore restituito è S_OK in caso di esito positivo o un valore di errore in caso contrario.
Commenti
Le intestazioni vengono trasferite tra i reindirizzamenti. In questo modo è possibile creare una vulnerabilità di sicurezza. Per evitare il trasferimento di intestazioni se si verifica un reindirizzamento, usare il callback WINHTTP_STATUS_CALLBACK per correggere le intestazioni specifiche quando si verifica un reindirizzamento.
Il metodo SetRequestHeader consente all'applicazione chiamante di aggiungere o eliminare un'intestazione di richiesta HTTP prima di inviare la richiesta. Il nome dell'intestazione viene specificato in Intestazione e il token o il valore dell'intestazione è specificato in Valore. Per aggiungere un'intestazione, specificare un nome e un valore di intestazione. Se esiste già un'altra intestazione con questo nome, viene sostituita. Per eliminare un'intestazione, impostare Intestazione sul nome dell'intestazione per eliminare e impostare Valore su NULL.
Il nome e il valore delle intestazioni di richiesta aggiunti con questo metodo vengono convalidati. Le intestazioni devono essere ben formate. Per altre informazioni sulle intestazioni HTTP valide, vedere RFC 2616. Se viene utilizzata un'intestazione non valida, si verifica un errore e l'intestazione non viene aggiunta.
Nota
Per Windows XP e Windows 2000, vedere la sezione Requisiti di runtime della pagina iniziale di WinHTTP.
Esempio
Nell'esempio seguente viene illustrato come aprire una connessione HTTP, impostare un'intestazione di richiesta, inviare una richiesta HTTP e leggere il testo della risposta. Questo esempio deve essere eseguito da un prompt dei comandi.
#include <windows.h>
#include <stdio.h>
#include <objbase.h>
#include "httprequest.h"
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "oleaut32.lib")
// IID for IWinHttpRequest.
const IID IID_IWinHttpRequest =
{
0x06f29373,
0x5c5a,
0x4b54,
{0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}
};
int main()
{
// Variable for return value
HRESULT hr;
// Initialize COM.
hr = CoInitialize( NULL );
IWinHttpRequest * pIWinHttpRequest = NULL;
BSTR bstrResponse = NULL;
VARIANT varFalse;
VARIANT varEmpty;
CLSID clsid;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BOOL;
V_BOOL(&varFalse) = VARIANT_FALSE;
VariantInit(&varEmpty);
V_VT(&varEmpty) = VT_ERROR;
hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);
if (SUCCEEDED(hr))
{
hr = CoCreateInstance(clsid, NULL,
CLSCTX_INPROC_SERVER,
IID_IWinHttpRequest,
(void **)&pIWinHttpRequest);
}
if (SUCCEEDED(hr))
{ // Open WinHttpRequest.
BSTR bstrMethod = SysAllocString(L"GET");
BSTR bstrUrl = SysAllocString(L"https://microsoft.com");
hr = pIWinHttpRequest->Open(bstrMethod, bstrUrl, varFalse);
SysFreeString(bstrMethod);
SysFreeString(bstrUrl);
}
if (SUCCEEDED(hr))
{ // Set request header.
BSTR bstrName = SysAllocString(L"Date");
BSTR bstrValue = SysAllocString(L"Fri, 16 Mar 2001 00:25:54 GMT");
hr = pIWinHttpRequest->SetRequestHeader(bstrName, bstrValue);
SysFreeString(bstrName);
SysFreeString(bstrValue);
}
if (SUCCEEDED(hr))
{ // Send Request.
hr = pIWinHttpRequest->Send(varEmpty);
}
if (SUCCEEDED(hr))
{ // Get Response headers.
hr = pIWinHttpRequest->GetAllResponseHeaders(&bstrResponse);
}
if (SUCCEEDED(hr))
{ // Print the response to a console.
wprintf(L"%.256s",bstrResponse);
}
// Release memory.
if (pIWinHttpRequest)
pIWinHttpRequest->Release();
if (bstrResponse)
SysFreeString(bstrResponse);
CoUninitialize();
return 0;
}
L'esempio di scripting seguente illustra come aprire una connessione HTTP, impostare un'intestazione di richiesta e inviare una richiesta HTTP.
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Initialize an HTTP request.
WinHttpReq.Open("GET", "https://www.microsoft.com", false);
// Add/replace a request header.
WinHttpReq.SetRequestHeader("Date", Date());
// Send the HTTP request.
WinHttpReq.Send();
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] |
Componente ridistribuibile |
WinHTTP 5.0 e Internet Explorer 5.01 o versione successiva in Windows XP e Windows 2000. |
IDL |
|
Libreria |
|
DLL |
|