Freigeben über


IWinHttpRequest::SetRequestHeader-Methode

Die SetRequestHeader-Methode fügt einen HTTP-Anforderungsheader hinzu, ändert oder löscht diesen.

Syntax

HRESULT SetRequestHeader(
  [in] BSTR Header,
  [in] BSTR Value
);

Parameter

Header [in]

Gibt den Namen des festzulegenden Headers an, z. B. "depth". Dieser Parameter darf keinen Doppelpunkt enthalten und muss der tatsächliche Text des HTTP-Headers sein.

Wert [in]

Gibt den Wert des Headers an, z. B. "infinity".

Rückgabewert

Der Rückgabewert wird bei Erfolg S_OK oder andernfalls ein Fehlerwert.

Bemerkungen

Header werden über Umleitungen übertragen. Dies kann zu einem Sicherheitsrisiko werden. Um zu vermeiden, dass Header übertragen werden, wenn eine Umleitung auftritt, verwenden Sie den WINHTTP_STATUS_CALLBACK Rückruf, um die spezifischen Header zu korrigieren, wenn eine Umleitung auftritt.

Die SetRequestHeader-Methode ermöglicht es der aufrufenden Anwendung, vor dem Senden der Anforderung einen HTTP-Anforderungsheader hinzuzufügen oder zu löschen. Der Headername wird in Header angegeben, und das Headertoken oder -wert wird in Value angegeben. Um einen Header hinzuzufügen, geben Sie einen Headernamen und einen Wert an. Wenn bereits ein anderer Header mit diesem Namen vorhanden ist, wird er ersetzt. Um einen Header zu löschen, legen Sie Header auf den Namen des zu löschenden Headers und Wert auf NULL fest.

Der Name und wert der Anforderungsheader, die mit dieser Methode hinzugefügt wurden, werden überprüft. Header müssen wohlgeformt sein. Weitere Informationen zu gültigen HTTP-Headern finden Sie unter RFC 2616. Wenn ein ungültiger Header verwendet wird, tritt ein Fehler auf, und der Header wird nicht hinzugefügt.

Hinweis

Informationen zu Windows XP und Windows 2000 finden Sie im Abschnitt Laufzeitanforderungen der WinHTTP-Startseite .

Beispiele

Das folgende Beispiel zeigt, wie Sie eine HTTP-Verbindung öffnen, einen Anforderungsheader festlegen, eine HTTP-Anforderung senden und den Antworttext lesen. Dieses Beispiel muss über eine Eingabeaufforderung ausgeführt werden.

#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;
}

Das folgende Skriptbeispiel zeigt, wie Sie eine HTTP-Verbindung öffnen, einen Anforderungsheader festlegen und eine HTTP-Anforderung senden.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP, Windows 2000 Professional mit SP3 [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003, Windows 2000 Server mit SP3 [nur Desktop-Apps]
Verteilbare Komponente
WinHTTP 5.0 und Internet Explorer 5.01 oder höher unter Windows XP und Windows 2000.
IDL
HttpRequest.idl
Bibliothek
Winhttp.lib
DLL
Winhttp.dll

Siehe auch

IWinHttpRequest

WinHttpRequest

WinHTTP-Versionen