Método IWinHttpRequest::SetRequestHeader
O método SetRequestHeader adiciona, altera ou exclui um cabeçalho de solicitação HTTP.
Sintaxe
HRESULT SetRequestHeader(
[in] BSTR Header,
[in] BSTR Value
);
Parâmetros
-
Cabeçalho [in]
-
Especifica o nome do cabeçalho a ser definido, por exemplo, "depth". Esse parâmetro não deve conter dois-pontos e deve ser o texto real do cabeçalho HTTP.
-
Valor [in]
-
Especifica o valor do cabeçalho, por exemplo, "infinito".
Valor retornado
Caso contrário, o valor retornado será S_OK com êxito ou um valor de erro.
Comentários
Os cabeçalhos são transferidos entre redirecionamentos. Isso pode criar uma vulnerabilidade de segurança. Para evitar que cabeçalhos sejam transferidos se ocorrer um redirecionamento, use o WINHTTP_STATUS_CALLBACK retorno de chamada para corrigir os cabeçalhos específicos quando ocorrer um redirecionamento.
O método SetRequestHeader permite que o aplicativo de chamada adicione ou exclua um cabeçalho de solicitação HTTP antes de enviar a solicitação. O nome do cabeçalho é fornecido em Cabeçalho e o token ou valor do cabeçalho é fornecido em Valor. Para adicionar um cabeçalho, forneça um nome de cabeçalho e um valor. Se outro cabeçalho já existir com esse nome, ele será substituído. Para excluir um cabeçalho, defina Cabeçalho como o nome do cabeçalho a ser excluído e defina Value como NULL.
O nome e o valor dos cabeçalhos de solicitação adicionados com esse método são validados. Os cabeçalhos devem estar bem formados. Para obter mais informações sobre cabeçalhos HTTP válidos, consulte RFC 2616. Se um cabeçalho inválido for usado, ocorrerá um erro e o cabeçalho não será adicionado.
Observação
Para Windows XP e Windows 2000, consulte a seção Requisitos de tempo de execução da página inicial do WinHTTP.
Exemplos
O exemplo a seguir mostra como abrir uma conexão HTTP, definir um cabeçalho de solicitação, enviar uma solicitação HTTP e ler o texto da resposta. Este exemplo deve ser executado em um prompt de comando.
#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;
}
O exemplo de script a seguir mostra como abrir uma conexão HTTP, definir um cabeçalho de solicitação e enviar uma solicitação 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();
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows XP, Windows 2000 Professional com SP3 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Windows Server 2003, Windows 2000 Server com SP3 [somente aplicativos da área de trabalho] |
Redistribuível |
WinHTTP 5.0 e Internet Explorer 5.01 ou posterior no Windows XP e Windows 2000. |
IDL |
|
Biblioteca |
|
DLL |
|