Freigeben über


IWinHttpRequest::SetProxy-Methode

Die SetProxy-Methode legt Proxyserverinformationen fest.

Syntax

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

Parameter

ProxySetting [in]

Die Flags, die diese Methode steuern. Kann einer der folgenden Werte sein.

Wert Bedeutung
HTTPREQUEST_PROXYSETTING_DEFAULT
Standardproxyeinstellung. Entspricht HTTPREQUEST_PROXYSETTING_PRECONFIG.
HTTPREQUEST_PROXYSETTING_PRECONFIG
Gibt an, dass die Proxyeinstellungen von der Registrierung abgerufen werden sollen. Dabei wird davon ausgegangen, dass Proxycfg.exe ausgeführt wurde. Wenn Proxycfg.exe nicht ausgeführt wurde und HTTPREQUEST_PROXYSETTING_PRECONFIG angegeben ist, entspricht das Verhalten HTTPREQUEST_PROXYSETTING_DIRECT.
HTTPREQUEST_PROXYSETTING_DIRECT
Gibt an, dass auf alle HTTP- und HTTPS-Server direkt zugegriffen werden soll. Verwenden Sie diesen Befehl, wenn kein Proxyserver vorhanden ist.
HTTPREQUEST_PROXYSETTING_PROXY
Wenn HTTPREQUEST_PROXYSETTING_PROXY angegeben wird, sollte varProxyServer auf eine Proxyserverzeichenfolge und varBypassList auf eine Domänenumgehungslistenzeichenfolge festgelegt werden. Diese Proxykonfiguration gilt nur für den aktuellen instance des WinHttpRequest-Objekts.

ProxyServer [in, optional]

Legen Sie auf eine Proxyserverzeichenfolge fest, wenn ProxySettinggleich HTTPREQUEST_PROXYSETTING_PROXY ist.

BypassList [in, optional]

Legen Sie auf eine Domänenumgehungslistenzeichenfolge fest, wenn ProxySettinggleich HTTPREQUEST_PROXYSETTING_PROXY ist.

Rückgabewert

Der Rückgabewert wird bei Erfolg S_OK oder andernfalls ein Fehlerwert.

Bemerkungen

Ermöglicht der aufrufenden Anwendung das Angeben der Verwendung von Standardproxyinformationen (konfiguriert durch das Proxykonfigurationstool) oder das Überschreiben Proxycfg.exe. Diese Methode muss vor dem Aufrufen der Send-Methode aufgerufen werden. Wenn diese Methode nach der Send-Methode aufgerufen wird, hat sie keine Auswirkung.

IWinHttpRequest übergibt diese Parameter an Microsoft Windows HTTP Services (WinHTTP).

Hinweis

Informationen zu Windows XP und Windows 2000 finden Sie im Abschnitt Laufzeitanforderungen der WinHTTP-Startseite .

Beispiele

Das folgende Beispiel zeigt, wie Sie die Proxyeinstellungen für einen bestimmten Proxyserver festlegen, eine HTTP-Verbindung öffnen, eine HTTP-Anforderung senden und den Antworttext lesen. Dieses Beispiel muss über eine Eingabeaufforderung ausgeführt werden. Diese Proxyeinstellungen funktionieren nur, wenn Sie über einen Proxyserver mit dem Namen "proxy_server" verfügen, der Port 80 verwendet und Ihr Computer den Proxyserver umgehen kann, wenn der Hostname mit ".microsoft.com" endet.

#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;
}

Im folgenden Skriptbeispiel wird gezeigt, wie Sie die Proxyeinstellungen für einen bestimmten Proxyserver festlegen, eine HTTP-Verbindung öffnen, eine HTTP-Anforderung senden und den Antworttext lesen. Diese Proxyeinstellungen funktionieren nur, wenn Sie über einen Proxyserver mit dem Namen "proxy_server" verfügen, der Port 80 verwendet und Ihr Computer den Proxyserver umgehen kann, wenn der Hostname mit ".microsoft.com" endet.

// 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);

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows XP, Windows 2000 Professional mit SP3 [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows Server 2003, Windows 2000 Server mit SP3 [nur Desktop-Apps]
Verteilbare Komponente
WinHTTP 5.0 und Internet Explorer 5.01 oder höher unter Windows XP und Windows 2000.
IDL
HttpRequest.idl
Bibliothek
Winhttp.lib
DLL
Winhttp.dll

Siehe auch

IWinHttpRequest

WinHttpRequest

WinHTTP-Versionen