IWinHttpRequest::SetProxy, méthode

La méthode SetProxy définit les informations du serveur proxy.

Syntaxe

HRESULT SetProxy(
  [in]           HTTPREQUEST_PROXY_SETTING ProxySetting,
  [in, optional] VARIANT                   ProxyServer,
  [in, optional] VARIANT                   BypassList
);

Paramètres

ProxySetting [in]

Indicateurs qui contrôlent cette méthode. Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
HTTPREQUEST_PROXYSETTING_DEFAULT
Paramètre de proxy par défaut. Équivalent à HTTPREQUEST_PROXYSETTING_PRECONFIG.
HTTPREQUEST_PROXYSETTING_PRECONFIG
Indique que les paramètres de proxy doivent être obtenus à partir du Registre. Cela suppose que Proxycfg.exe a été exécuté. Si Proxycfg.exe n’a pas été exécuté et que HTTPREQUEST_PROXYSETTING_PRECONFIG est spécifié, le comportement équivaut à HTTPREQUEST_PROXYSETTING_DIRECT.
HTTPREQUEST_PROXYSETTING_DIRECT
Indique que tous les serveurs HTTP et HTTPS doivent être accessibles directement. Utilisez cette commande s’il n’y a pas de serveur proxy.
HTTPREQUEST_PROXYSETTING_PROXY
Lorsque HTTPREQUEST_PROXYSETTING_PROXY est spécifié, varProxyServer doit être défini sur une chaîne de serveur proxy et varBypassList doit être défini sur une chaîne de liste de contournement de domaine. Cette configuration de proxy s’applique uniquement à la instance actuelle de l’objet WinHttpRequest.

ProxyServer [in, facultatif]

Définissez sur une chaîne de serveur proxy lorsque ProxySetting est égal à HTTPREQUEST_PROXYSETTING_PROXY.

BypassList [in, facultatif]

Définissez sur une chaîne de liste de contournement de domaine lorsque ProxySetting est égal à HTTPREQUEST_PROXYSETTING_PROXY.

Valeur retournée

La valeur de retour est S_OK en cas de réussite ou une valeur d’erreur dans le cas contraire.

Notes

Permet à l’application appelante de spécifier l’utilisation des informations de proxy par défaut (configurées par l’outil de configuration de proxy) ou de remplacer Proxycfg.exe. Cette méthode doit être appelée avant d’appeler la méthode Send . Si cette méthode est appelée après la méthode Send , elle n’a aucun effet.

IWinHttpRequest transmet ces paramètres à Microsoft Windows HTTP Services (WinHTTP).

Notes

Pour Windows XP et Windows 2000, consultez la section Conditions requises pour l’exécution de la page de démarrage WinHTTP.

Exemples

L’exemple suivant montre comment définir les paramètres de proxy pour un serveur proxy particulier, ouvrir une connexion HTTP, envoyer une requête HTTP et lire le texte de réponse. Cet exemple doit être exécuté à partir d’une invite de commandes. Ces paramètres de proxy fonctionnent uniquement si vous disposez d’un serveur proxy nommé « proxy_server » qui utilise le port 80 et que votre ordinateur peut contourner le serveur proxy lorsque le nom d’hôte se termine par « .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’exemple de script suivant montre comment définir les paramètres de proxy pour un serveur proxy particulier, ouvrir une connexion HTTP, envoyer une requête HTTP et lire le texte de réponse. Ces paramètres de proxy fonctionnent uniquement si vous disposez d’un serveur proxy nommé « proxy_server » qui utilise le port 80 et que votre ordinateur peut contourner le serveur proxy lorsque le nom d’hôte se termine par « .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);

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows XP, Windows 2000 Professionnel avec SP3 [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2003, Windows 2000 Server avec SP3 [applications de bureau uniquement]
Composant redistribuable
WinHTTP 5.0 et Internet Explorer 5.01 ou version ultérieure sur Windows XP et Windows 2000.
IDL
HttpRequest.idl
Bibliothèque
Winhttp.lib
DLL
Winhttp.dll

Voir aussi

IWinHttpRequest

WinHttpRequest

WinHTTP Versions