IWinHttpRequest::SetProxy 메서드

SetProxy 메서드는 프록시 서버 정보를 설정합니다.

구문

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

매개 변수

ProxySetting [in]

이 메서드를 제어하는 플래그입니다. 다음 값 중 하나일 수 있습니다.

의미
HTTPREQUEST_PROXYSETTING_DEFAULT
기본 프록시 설정입니다. HTTPREQUEST_PROXYSETTING_PRECONFIG 동일합니다.
HTTPREQUEST_PROXYSETTING_PRECONFIG
레지스트리에서 프록시 설정을 가져와야 임을 나타냅니다. Proxycfg.exe실행된 것으로 가정합니다. Proxycfg.exe 실행되지 않고 HTTPREQUEST_PROXYSETTING_PRECONFIG 지정한 경우 동작은 HTTPREQUEST_PROXYSETTING_DIRECT 동일합니다.
HTTPREQUEST_PROXYSETTING_DIRECT
모든 HTTP 및 HTTPS 서버에 직접 액세스해야 했음을 나타냅니다. 프록시 서버가 없는 경우 이 명령을 사용합니다.
HTTPREQUEST_PROXYSETTING_PROXY
HTTPREQUEST_PROXYSETTING_PROXY 지정되면 varProxyServer를 프록시 서버 문자열로 설정하고 varBypassList를 도메인 바이패스 목록 문자열로 설정해야 합니다. 이 프록시 구성은 WinHttpRequest 개체의 현재 instance 적용됩니다.

ProxyServer [in, optional]

ProxySettingHTTPREQUEST_PROXYSETTING_PROXY 같으면 프록시 서버 문자열로 설정합니다.

BypassList [in, optional]

ProxySettingHTTPREQUEST_PROXYSETTING_PROXY 경우 도메인 바이패스 목록 문자열로 설정합니다.

반환 값

반환 값은 성공에 S_OK , 그렇지 않으면 오류 값입니다.

설명

호출 애플리케이션이 기본 프록시 정보(프록시 구성 도구로 구성됨)의 사용을 지정하거나Proxycfg.exe재정의할 있도록 합니다. Send 메서드를 호출하기 전에 이 메서드를 호출해야 합니다. 이 메서드가 Send 메서드 다음에 호출되면 아무런 효과가 없습니다.

IWinHttpRequest 는 이러한 매개 변수를 WinHTTP(Microsoft Windows HTTP 서비스)에 전달합니다.

참고

Windows XP 및 Windows 2000의 경우 WinHTTP 시작 페이지의 런타임 요구 사항 섹션을 참조하세요.

예제

다음 예제에서는 특정 프록시 서버에 대한 프록시 설정을 설정하고, HTTP 연결을 열고, HTTP 요청을 보내고, 응답 텍스트를 읽는 방법을 보여줍니다. 이 예제는 명령 프롬프트에서 실행해야 합니다. 이러한 프록시 설정은 포트 80을 사용하는 "proxy_server"라는 프록시 서버가 있고 호스트 이름이 ".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;
}

다음 스크립팅 예제에서는 특정 프록시 서버에 대한 프록시 설정을 설정하고, HTTP 연결을 열고, HTTP 요청을 보내고, 응답 텍스트를 읽는 방법을 보여줍니다. 이러한 프록시 설정은 포트 80을 사용하는 "proxy_server"라는 프록시 서버가 있고 호스트 이름이 ".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);

요구 사항

요구 사항
지원되는 최소 클라이언트
Windows XP, Windows 2000 Professional SP3 포함 [데스크톱 앱만 해당]
지원되는 최소 서버
Windows Server 2003, Windows 2000 Server SP3 [데스크톱 앱만 해당]
재배포 가능 파일
Windows XP 및 Windows 2000에서 WinHTTP 5.0 및 인터넷 Explorer 5.01 이상.
IDL
HttpRequest.idl
라이브러리
Winhttp.lib
DLL
Winhttp.dll

추가 정보

IWinHttpRequest

WinHttpRequest

WinHTTP 버전