Método IWinHttpRequest::SetProxy
El método SetProxy establece la información del servidor proxy.
Sintaxis
HRESULT SetProxy(
[in] HTTPREQUEST_PROXY_SETTING ProxySetting,
[in, optional] VARIANT ProxyServer,
[in, optional] VARIANT BypassList
);
Parámetros
-
ProxySetting [in]
-
Marcas que controlan este método. Puede ser uno de los valores siguientes.
Value Significado - HTTPREQUEST_PROXYSETTING_DEFAULT
Configuración de proxy predeterminada. Equivalente a HTTPREQUEST_PROXYSETTING_PRECONFIG. - HTTPREQUEST_PROXYSETTING_PRECONFIG
Indica que la configuración del proxy se debe obtener del Registro. Se supone que se ha ejecutado Proxycfg.exe . Si no se ha ejecutado Proxycfg.exe y se especifica HTTPREQUEST_PROXYSETTING_PRECONFIG , el comportamiento es equivalente a HTTPREQUEST_PROXYSETTING_DIRECT. - HTTPREQUEST_PROXYSETTING_DIRECT
Indica que se debe tener acceso directamente a todos los servidores HTTP y HTTPS. Use este comando si no hay ningún servidor proxy. - HTTPREQUEST_PROXYSETTING_PROXY
Cuando se especifica HTTPREQUEST_PROXYSETTING_PROXY , varProxyServer debe establecerse en una cadena de servidor proxy y varBypassList debe establecerse en una cadena de lista de omisión de dominio. Esta configuración de proxy solo se aplica a la instancia actual del objeto WinHttpRequest . -
ProxyServer [in, opcional]
-
Se establece en una cadena de servidor proxy cuando ProxySetting es igual a HTTPREQUEST_PROXYSETTING_PROXY.
-
BypassList [in, opcional]
-
Se establece en una cadena de lista de omisión de dominio cuando ProxySetting es igual a HTTPREQUEST_PROXYSETTING_PROXY.
Valor devuelto
El valor devuelto se S_OK si se ejecuta correctamente o se produce un valor de error en caso contrario.
Comentarios
Permite a la aplicación que realiza la llamada especificar el uso de información de proxy predeterminada (configurada por la herramienta de configuración de proxy) o invalidar Proxycfg.exe. Se debe llamar a este método antes de llamar al método Send . Si se llama a este método después del método Send , no tiene ningún efecto.
IWinHttpRequest pasa estos parámetros a los servicios HTTP de Microsoft Windows (WinHTTP).
Nota
Para Windows XP y Windows 2000, consulta la sección Requisitos en tiempo de ejecución de la página de inicio de WinHTTP.
Ejemplos
En el ejemplo siguiente se muestra cómo establecer la configuración de proxy para un servidor proxy determinado, abrir una conexión HTTP, enviar una solicitud HTTP y leer el texto de respuesta. Este ejemplo debe ejecutarse desde un símbolo del sistema. Esta configuración de proxy solo funciona si tiene un servidor proxy denominado "proxy_server" que usa el puerto 80 y el equipo puede omitir el servidor proxy cuando el nombre de host termina con ".microsoft.com".
#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;
VARIANT varProxy;
VARIANT varUrl;
CLSID clsid;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BOOL;
V_BOOL(&varFalse) = VARIANT_FALSE;
VariantInit(&varEmpty);
V_VT(&varEmpty) = VT_ERROR;
VariantInit(&varProxy);
VariantInit(&varUrl);
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))
{ // Specify proxy and URL.
varProxy.vt = VT_BSTR;
varProxy.bstrVal = SysAllocString(L"proxy_server:80");
varUrl.vt = VT_BSTR;
varUrl.bstrVal = SysAllocString(L"*.microsoft.com");
hr = pIWinHttpRequest->SetProxy(HTTPREQUEST_PROXYSETTING_PROXY,
varProxy, varUrl);
}
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))
{ // Send Request.
hr = pIWinHttpRequest->Send(varEmpty);
}
if (SUCCEEDED(hr))
{ // Get Response text.
hr = pIWinHttpRequest->get_ResponseText(&bstrResponse);
}
if (SUCCEEDED(hr))
{ // Print the response to a console.
wprintf(L"%.256s",bstrResponse);
}
// Release memory.
if (pIWinHttpRequest)
pIWinHttpRequest->Release();
if (varProxy.bstrVal)
SysFreeString(varProxy.bstrVal);
if (varUrl.bstrVal)
SysFreeString(varUrl.bstrVal);
if (bstrResponse)
SysFreeString(bstrResponse);
CoUninitialize();
return 0;
}
En el ejemplo de scripting siguiente se muestra cómo establecer la configuración de proxy para un servidor proxy determinado, abrir una conexión HTTP, enviar una solicitud HTTP y leer el texto de respuesta. Esta configuración de proxy solo funciona si tiene un servidor proxy denominado "proxy_server" que usa el puerto 80 y el equipo puede omitir el servidor proxy cuando el nombre de host termina con ".microsoft.com".
// HttpRequest SetCredentials flags.
HTTPREQUEST_PROXYSETTING_DEFAULT = 0;
HTTPREQUEST_PROXYSETTING_PRECONFIG = 0;
HTTPREQUEST_PROXYSETTING_DIRECT = 1;
HTTPREQUEST_PROXYSETTING_PROXY = 2;
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Use proxy_server for all requests outside of
// the microsoft.com domain.
WinHttpReq.SetProxy( HTTPREQUEST_PROXYSETTING_PROXY,
"proxy_server:80",
"*.microsoft.com");
// Initialize an HTTP request.
WinHttpReq.Open("GET", "https://www.microsoft.com", false);
// Send the HTTP request.
WinHttpReq.Send();
// Display the response text.
WScript.Echo( WinHttpReq.ResponseText);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows XP, Windows 2000 Professional con SP3 [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2003, Windows 2000 Server con SP3 [solo aplicaciones de escritorio] |
Redistribuible |
WinHTTP 5.0 e Internet Explorer 5.01 o posterior en Windows XP y Windows 2000. |
IDL |
|
Biblioteca |
|
Archivo DLL |
|