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 [ dans]

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

Valeur Signification
HTTPREQUEST _ PROXYSETTING _ par défaut
Paramètre de proxy par défaut. Équivalent à la _ _ préconfiguration de HTTPREQUEST PROXYSETTING.
préconfiguration de HTTPREQUEST _ PROXYSETTING _
Indique que les paramètres de proxy doivent être obtenus à partir du Registre. Cela suppose que Proxycfg.exe a été exécutée. Si Proxycfg.exe n’a pas été exécuté et que la _ _ préconfiguration HttpRequest PROXYSETTING est spécifiée, le comportement est équivalent à HTTPREQUEST _ PROXYSETTING _ direct.
_PROXYSETTING HTTPREQUEST _ directe
Indique que tous les serveurs HTTP et HTTPs doivent être accessibles directement. Utilisez cette commande s’il n’y a pas de serveur proxy.
_proxy HTTPREQUEST PROXYSETTING _
Quand le _ _ proxy PROXYSETTING HTTPREQUEST 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 à l’instance actuelle de l’objet WinHttpRequest .

ProxyServer [ dans, facultatif]

Défini sur une chaîne de serveur proxy lorsque ProxySetting est égal à HTTPREQUEST _ ProxySetting _ proxy.

BypassList [ dans, facultatif]

Défini 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.

Remarques

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 substituer les 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 configuration requise pour l’exécution de la Page de démarrage de 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 la réponse. Cet exemple doit être exécuté à partir d’une invite de commandes. Ces paramètres de proxy ne fonctionnent que si vous disposez d’un serveur proxy nommé « _ serveur proxy » 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 la réponse. Ces paramètres de proxy ne fonctionnent que si vous disposez d’un serveur proxy nommé « _ serveur proxy » 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);

Configuration requise

Condition requise Valeur
Client minimal pris en charge
Windows XP, Windows 2000 Professional avec les [ applications de bureau SP3 uniquement]
Serveur minimal pris en charge
Windows server 2003, Windows 2000 server avec des [ applications de bureau SP3 uniquement]
Composant redistribuable
WinHTTP 5,0 et Internet Explorer 5,01 ou version ultérieure sur Windows XP et Windows 2000.
MIDL
HttpRequest. idl
Bibliothèque
WinHTTP. lib
DLL
Winhttp.dll

Voir aussi

IWinHttpRequest

WinHttpRequest

Versions de WinHTTP