Metodo IWinHttpRequest::SetProxy
Il metodo SetProxy imposta le informazioni sul server proxy.
Sintassi
HRESULT SetProxy(
[in] HTTPREQUEST_PROXY_SETTING ProxySetting,
[in, optional] VARIANT ProxyServer,
[in, optional] VARIANT BypassList
);
Parametri
-
ProxySetting [in]
-
Flag che controllano questo metodo. Può essere uno dei valori seguenti.
Valore Significato - HTTPREQUEST_PROXYSETTING_DEFAULT
Impostazione proxy predefinita. Equivale a HTTPREQUEST_PROXYSETTING_PRECONFIG. - HTTPREQUEST_PROXYSETTING_PRECONFIG
Indica che le impostazioni proxy devono essere ottenute dal Registro di sistema. Si presuppone che sia stata eseguita Proxycfg.exe . Se Proxycfg.exe non è stato eseguito e viene specificato HTTPREQUEST_PROXYSETTING_PRECONFIG , il comportamento equivale a HTTPREQUEST_PROXYSETTING_DIRECT. - HTTPREQUEST_PROXYSETTING_DIRECT
Indica che è necessario accedere direttamente a tutti i server HTTP e HTTPS. Usare questo comando se non è presente alcun server proxy. - HTTPREQUEST_PROXYSETTING_PROXY
Quando si specifica HTTPREQUEST_PROXYSETTING_PROXY , varProxyServer deve essere impostato su una stringa del server proxy e varBypassList deve essere impostato su una stringa dell'elenco di bypass del dominio. Questa configurazione proxy si applica solo all'istanza corrente dell'oggetto WinHttpRequest . -
ProxyServer [in, facoltativo]
-
Impostare su una stringa del server proxy quando ProxySetting è uguale a HTTPREQUEST_PROXYSETTING_PROXY.
-
BypassList [in, facoltativo]
-
Impostare su una stringa di elenco di bypass del dominio quando ProxySetting è uguale a HTTPREQUEST_PROXYSETTING_PROXY.
Valore restituito
Il valore restituito è S_OK in caso di esito positivo o un valore di errore in caso contrario.
Commenti
Consente all'applicazione chiamante di specificare l'uso delle informazioni proxy predefinite (configurate dallo strumento di configurazione proxy) o di eseguire l'override diProxycfg.exe. Questo metodo deve essere chiamato prima di chiamare il metodo Send . Se questo metodo viene chiamato dopo il metodo Send , non ha alcun effetto.
IWinHttpRequest passa questi parametri a Microsoft Windows HTTP Services (WinHTTP).
Nota
Per Windows XP e Windows 2000, vedere la sezione Requisiti di runtime della pagina iniziale di WinHTTP.
Esempio
Nell'esempio seguente viene illustrato come impostare le impostazioni proxy per un determinato server proxy, aprire una connessione HTTP, inviare una richiesta HTTP e leggere il testo della risposta. Questo esempio deve essere eseguito da un prompt dei comandi. Queste impostazioni proxy funzionano solo se si dispone di un server proxy denominato "proxy_server" che usa la porta 80 e il computer può ignorare il server proxy quando il nome 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;
}
L'esempio di scripting seguente illustra come impostare le impostazioni proxy per un determinato server proxy, aprire una connessione HTTP, inviare una richiesta HTTP e leggere il testo della risposta. Queste impostazioni proxy funzionano solo se si dispone di un server proxy denominato "proxy_server" che usa la porta 80 e il computer può ignorare il server proxy quando il nome 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);
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows XP, Windows 2000 Professional con SP3 [solo app desktop] |
Server minimo supportato |
Windows Server 2003, Windows 2000 Server con SP3 [solo app desktop] |
Componente ridistribuibile |
WinHTTP 5.0 e Internet Explorer 5.01 o versione successiva in Windows XP e Windows 2000. |
IDL |
|
Libreria |
|
DLL |
|