Bagikan melalui


Mengatur Konfigurasi Proksi WinINet di WinHTTP

Mengatur Proksi Otomatis di WinHTTP 5.1

Aplikasi yang port dari WinINet ke WinHTTP mungkin perlu menggunakan pengaturan autoproksi yang sama yang dapat mereka ambil di bawah WinINet atau Internet Explorer (IE). API WinHTTP versi 5.1 dapat mengambil dan menggunakan pengaturan proksi ini. Secara umum, WinHTTP menentukan server proksi dan proksi bypass per sesi saat sesi dibuat. Pengaturan ini dapat ditimpa berdasarkan per permintaan.

Untuk menggunakan konfigurasi proksi yang sama dengan WinINet atau IE, klien WinHTTP harus mengatur pengaturan proksi untuk sesi tersebut. Selain itu, jika IE atau WinINet dikonfigurasi untuk menggunakan Web Proxy Auto-Discovery (WPAD), klien WinHTTP yang menggunakan pengaturan tersebut harus mengatur pengaturan proksi berdasarkan per permintaan. Bagian berikut menjelaskan cara menentukan pengaturan proksi untuk sesi dan permintaan:

Mengatur Konfigurasi Proksi pada Sesi

Aplikasi Berjalan pada Akun Pengguna

Sebelum sesi dibuat, aplikasi memanggil WinHttpGetIEProxyConfigForCurrentUser untuk mendapatkan pengaturan proksi IE. Aplikasi harus berjalan sebagai akun pengguna untuk mendapatkan pengaturan ini. Parameter pProxyConfig adalah penunjuk ke struktur WINHTTP_CURRENT_USER_IE_PROXY_CONFIG yang berisi server nama proksi (lpszProxy) dan bypass proksi (lpszProxyBypass). Nama proksi dan nilai bypass proksi dari struktur WINHTTP_CURRENT_USER_IE_PROXY_CONFIG kemudian digunakan untuk menginisialisasi sesi WinHTTP. Sesi ini diinisialisasi dengan memanggil WinHttpOpen dengan parameter pwszProxyName dan pwszProxyBypass yang diperoleh dari anggota lpszProxy dan lpszProxyBypass dari struktur WINHTTP_CURRENT_USER_IE_PROXY_CONFIG .

Aplikasi Berjalan sebagai Layanan

Aplikasi harus memastikan bahwa pengaturan registri untuk pengguna individual dimuat ke dalam registri sebelum memanggil WinHttpGetIEProxyConfigForCurrentUser. Jika pengaturan ini tidak dimuat ke dalam registri, WinHttpGetIEProxyConfigForCurrentUser tidak dapat memperoleh pengaturan proksi. Pengaturan registri untuk pengguna individual dapat dimuat ke dalam registri dengan memanggil fungsi LoadUserProfile . Jika memuat pengaturan registri pengguna bukan opsi, aplikasi dapat memanggil WinHttpOpen dengan WINHTTP_ACCESS_TYPE_DEFAULT_PROXY yang ditentukan dalam parameter dwAcessType . Menentukan proksi default dalam panggilan ke WinHttpOpen memberi tahu WinHTTP API untuk mengambil konfigurasi proksi yang ditetapkan dengan menggunakan utilitas WinHTTPproxycfg.exe . Setelah pengaturan registri untuk pengguna individu dimuat, aplikasi mengikuti langkah-langkah yang diuraikan di bawah Aplikasi berjalan pada akun pengguna untuk mengatur nama proksi dan server bypass proksi.

Mengatur Konfigurasi Proksi pada Satu Permintaan

Sebelum sesi dibuat, aplikasi memanggil WinHttpGetIEProxyConfigForCurrentUser untuk menentukan apakah WinINet dan IE dikonfigurasi untuk menggunakan WPAD. WinHttpGetIEProxyConfigForCurrentUser mengembalikan struktur WINHTTP_CURRENT_USER_IE_PROXY_CONFIG yang berisi anggota fAutoDetect . Nilai TRUE untuk anggota ini menunjukkan bahwa WPAD digunakan, dan anggota lpszAutoConfigUrl berisi URL WPAD.

Konfigurasi Proksi Otomatis digunakan

Jika WPAD digunakan, aplikasi memanggil WinHttpGetProxyForUrl untuk mengambil proksi untuk permintaan tersebut. Parameter lpwszUrl berisi URL tempat permintaan dikirim, dan parameter pAutoProxyOptions berisi penunjuk ke struktur (WINHTTP_AUTOPROXY_OPTIONS) yang berisi opsi autoproksi. Aplikasi menginisialisasi struktur WINHTTP_AUTOPROXY_OPTIONS dengan pengaturan yang dikembalikan dari struktur WINHTTP_CURRENT_USER_IE_PROXY_CONFIG dalam panggilan ke WinHttpGetIEProxyConfigForCurrentUser. Bendera WINHTTP_AUTOPROXY_CONFIG_URL ditentukan dalam anggota dwFlags dari struktur WINHTTP_AUTOPROXY_OPTIONS , dan anggota lpszAutoconfigUrl berisi URL konfigurasi otomatis proksi dari struktur WINHTTP_CURRENT_USER_IE_PROXY_CONFIG . Fungsi WinHttpGetProxyForUrl mengembalikan nama proksi dan daftar bypass proksi di anggota lpszProxy dan lpszProxyBypass dari struktur WINHTTP_PROXY_INFO .

Setelah proksi untuk permintaan diperoleh dari WinHttpGetProxyForUrl, aplikasi membuat permintaan dengan WinHttpOpenRequest. Kemudian WinHttpSetOption dipanggil untuk mengatur proksi untuk permintaan dengan menentukan handel permintaan di parameter hInternet . Parameter dwOption dalam panggilan ke WinHttpSetOption harus diatur ke WINHTTP_OPTION_PROXY dan parameter lpBuffer adalah penunjuk ke struktur WINHTTP_PROXY_INFO yang berisi bypass proksi dan proksi yang akan digunakan untuk permintaan tersebut.

Konfigurasi Proksi Otomatis Tidak Digunakan

Jika panggilan ke WinHttpGetIEProxyConfigForCurrentUser menunjukkan bahwa proksi otomatis tidak digunakan, aplikasi cukup membuat permintaan dengan WinHttpOpenRequest. Konfigurasi proksi sama untuk seluruh sesi, dan perubahan per permintaan tidak diperlukan.