Metode IWinHttpRequest::SetRequestHeader

Metode SetRequestHeader menambahkan, mengubah, atau menghapus header permintaan HTTP.

Sintaks

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

Parameter

Header [in]

Menentukan nama header yang akan diatur, misalnya, "kedalaman". Parameter ini tidak boleh berisi titik dua dan harus merupakan teks aktual dari header HTTP.

Nilai [in]

Menentukan nilai header, misalnya, "infinity".

Menampilkan nilai

Nilai yang dikembalikan S_OK pada keberhasilan atau nilai kesalahan jika tidak.

Keterangan

Header ditransfer di seluruh pengalihan. Ini dapat membuat kerentanan keamanan. Untuk menghindari header yang ditransfer jika pengalihan terjadi, gunakan panggilan balik WINHTTP_STATUS_CALLBACK untuk memperbaiki header tertentu saat pengalihan terjadi.

Metode SetRequestHeader memungkinkan aplikasi panggilan untuk menambahkan atau menghapus header permintaan HTTP sebelum mengirim permintaan. Nama header diberikan di Header, dan token header atau nilai diberikan dalam Nilai. Untuk menambahkan header, berikan nama header dan nilai. Jika header lain sudah ada dengan nama ini, header tersebut akan diganti. Untuk menghapus header, atur Header ke nama header untuk menghapus dan mengatur Nilai ke NULL.

Nama dan nilai header permintaan yang ditambahkan dengan metode ini divalidasi. Header harus terbentuk dengan baik. Untuk informasi selengkapnya tentang header HTTP yang valid, lihat RFC 2616. Jika header yang tidak valid digunakan, kesalahan terjadi dan header tidak ditambahkan.

Catatan

Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di Halaman Mulai WinHTTP.

Contoh

Contoh berikut menunjukkan cara membuka koneksi HTTP, mengatur header permintaan, mengirim permintaan HTTP, dan membaca teks respons. Contoh ini harus dijalankan dari prompt perintah.

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

Contoh pembuatan skrip berikut menunjukkan cara membuka koneksi HTTP, mengatur header permintaan, dan mengirim permintaan 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();

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows XP, Windows 2000 Professional dengan SP3 [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2003, Windows 2000 Server dengan SP3 [hanya aplikasi desktop]
Redistribusi
WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru pada Windows XP dan Windows 2000.
IDL
HttpRequest.idl
Pustaka
Winhttp.lib
DLL
Winhttp.dll

Lihat juga

IWinHttpRequest

WinHttpRequest

Versi WinHTTP