Bagikan melalui


Metode IWinHttpRequest::SetProxy

Metode SetProxy mengatur informasi server proksi.

Sintaks

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

Parameter

ProxySetting [in]

Bendera yang mengontrol metode ini. Bisa menjadi salah satu nilai berikut.

Nilai Makna
HTTPREQUEST_PROXYSETTING_DEFAULT
Pengaturan proksi default. Setara dengan HTTPREQUEST_PROXYSETTING_PRECONFIG.
HTTPREQUEST_PROXYSETTING_PRECONFIG
Menunjukkan bahwa pengaturan proksi harus diperoleh dari registri. Ini mengasumsikan bahwa Proxycfg.exe telah dijalankan. Jika Proxycfg.exe belum dijalankan dan HTTPREQUEST_PROXYSETTING_PRECONFIG ditentukan, maka perilaku tersebut setara dengan HTTPREQUEST_PROXYSETTING_DIRECT.
HTTPREQUEST_PROXYSETTING_DIRECT
Menunjukkan bahwa semua server HTTP dan HTTPS harus diakses secara langsung. Gunakan perintah ini jika tidak ada server proksi.
HTTPREQUEST_PROXYSETTING_PROXY
Ketika HTTPREQUEST_PROXYSETTING_PROXY ditentukan, varProxyServer harus diatur ke string server proksi dan varBypassList harus diatur ke string daftar bypass domain. Konfigurasi proksi ini hanya berlaku untuk instans objek WinHttpRequest saat ini.

ProxyServer [in, opsional]

Atur ke string server proksi saat ProxySetting sama dengan HTTPREQUEST_PROXYSETTING_PROXY.

BypassList [in, opsional]

Atur ke string daftar bypass domain saat ProxySetting sama dengan HTTPREQUEST_PROXYSETTING_PROXY.

Menampilkan nilai

Nilai yang dikembalikan S_OK pada keberhasilan atau nilai kesalahan jika tidak.

Keterangan

Memungkinkan aplikasi panggilan untuk menentukan penggunaan informasi proksi default (dikonfigurasi oleh alat konfigurasi proksi) atau untuk mengambil alih Proxycfg.exe. Metode ini harus dipanggil sebelum memanggil metode Kirim . Jika metode ini dipanggil setelah metode Kirim , metode tersebut tidak berpengaruh.

IWinHttpRequest meneruskan parameter ini ke Microsoft Windows HTTP Services (WinHTTP).

Catatan

Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di Halaman Mulai WinHTTP.

Contoh

Contoh berikut menunjukkan cara mengatur pengaturan proksi untuk server proksi tertentu, membuka koneksi HTTP, mengirim permintaan HTTP, dan membaca teks respons. Contoh ini harus dijalankan dari prompt perintah. Pengaturan proksi ini hanya berfungsi jika Anda memiliki server proksi bernama "proxy_server" yang menggunakan port 80 dan komputer Anda dapat melewati server proksi ketika nama host berakhir dengan ".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;
}

Contoh pembuatan skrip berikut menunjukkan cara mengatur pengaturan proksi untuk server proksi tertentu, membuka koneksi HTTP, mengirim permintaan HTTP, dan membaca teks respons. Pengaturan proksi ini hanya berfungsi jika Anda memiliki server proksi bernama "proxy_server" yang menggunakan port 80 dan komputer Anda dapat melewati server proksi ketika nama host berakhir dengan ".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);

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung
Windows XP, Windows 2000 Professional dengan SP3 [hanya aplikasi desktop]
Server minimum yang didukung
Windows Server 2003, Windows 2000 Server dengan SP3 [hanya aplikasi desktop]
Redistribusi
WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru pada Windows XP dan Windows 2000.
IDL
HttpRequest.idl
Pustaka
Winhttp.lib
DLL
Winhttp.dll

Lihat juga

IWinHttpRequest

WinHttpRequest

Versi WinHTTP