Condividi tramite


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
HttpRequest.idl
Libreria
Winhttp.lib
DLL
Winhttp.dll

Vedi anche

IWinHttpRequest

WinHttpRequest

Versioni di WinHTTP