IWinHttpRequest::SetRequestHeader-Methode

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

Syntax

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

Parameter

Header [ In]

Gibt den Namen des headers an, der festgelegt werden soll, z. B. "depth". Dieser Parameter sollte 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 ist S _ OK bei Erfolg oder andernfalls ein Fehlerwert.

Hinweise

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.

Mit der SetRequestHeader-Methode kann die aufrufende Anwendung vor dem Senden der Anforderung einen HTTP-Anforderungsheader hinzufügen oder löschen. Der Headername wird in Header angegeben, und das Headertoken oder der Wert wird in Wert angegeben. Um einen Header hinzuzufügen, geben Sie einen Headernamen und -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 Value auf NULL fest.

Der Name und Wert von Anforderungsheadern, 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 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 nur mit [ SP3-Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003, Windows 2000 Server nur mit [ SP3-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