Fungsi WinHttpOpen (winhttp.h)
Fungsi WinHttpOpen menginisialisasi, untuk aplikasi, penggunaan fungsi WinHTTP dan mengembalikan handel sesi WinHTTP.
Sintaks
WINHTTPAPI HINTERNET WinHttpOpen(
[in, optional] LPCWSTR pszAgentW,
[in] DWORD dwAccessType,
[in] LPCWSTR pszProxyW,
[in] LPCWSTR pszProxyBypassW,
[in] DWORD dwFlags
);
Parameter
[in, optional] pszAgentW
Penunjuk ke variabel string yang berisi nama aplikasi atau entitas yang memanggil fungsi WinHTTP. Nama ini digunakan sebagai agen pengguna dalam protokol HTTP.
[in] dwAccessType
Jenis akses yang diperlukan. Ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Menyelesaikan semua nama host secara langsung tanpa proksi. |
|
Penting Penggunaan opsi ini tidak digunakan lagi pada Windows 8.1 dan yang lebih baru. Gunakan WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY sebagai gantinya.
Konfigurasi proksi WinHTTP diatur oleh salah satu mekanisme ini.
|
|
Meneruskan permintaan ke proksi kecuali daftar bypass proksi disediakan dan nama yang akan diselesaikan melewati proksi. Dalam hal ini, fungsi ini menggunakan nilai yang diteruskan untuk pwszProxyName dan pwszProxyBypass. |
|
Menggunakan pengaturan proksi sistem dan per pengguna (termasuk konfigurasi proksi Internet Explorer) untuk menentukan proksi/proksi mana yang akan digunakan. Secara otomatis mencoba menangani failover antara beberapa proksi, konfigurasi proksi yang berbeda per antarmuka, dan autentikasi. Didukung di Windows 8.1 dan yang lebih baru. |
[in] pszProxyW
Penunjuk ke variabel string yang berisi nama server proksi yang akan digunakan saat akses proksi ditentukan dengan mengatur dwAccessType ke WINHTTP_ACCESS_TYPE_NAMED_PROXY. Fungsi WinHTTP hanya mengenali proksi jenis CERN untuk HTTP. Jika dwAccessType tidak diatur ke WINHTTP_ACCESS_TYPE_NAMED_PROXY, parameter ini harus diatur ke WINHTTP_NO_PROXY_NAME.
[in] pszProxyBypassW
Penunjuk ke variabel string yang berisi daftar nama host atau alamat IP yang dibatasi titik koma opsional, atau keduanya, yang tidak boleh dirutekan melalui proksi ketika dwAccessType diatur ke WINHTTP_ACCESS_TYPE_NAMED_PROXY. Daftar dapat berisi karakter kartubebas. Jangan gunakan string kosong, karena fungsi WinHttpOpen menggunakannya sebagai daftar bypass proksi. Jika parameter ini menentukan makro "<lokal>" dalam daftar sebagai satu-satunya entri, fungsi ini melewati nama host apa pun yang tidak berisi titik. Jika dwAccessType tidak diatur ke WINHTTP_ACCESS_TYPE_NAMED_PROXY, parameter ini harus diatur ke WINHTTP_NO_PROXY_BYPASS.
[in] dwFlags
Nilai bilangan bulat panjang yang tidak ditandatangani yang berisi bendera yang menunjukkan berbagai opsi yang memengaruhi perilaku fungsi ini. Parameter ini dapat memiliki nilai berikut.
Nilai | Makna |
---|---|
|
Gunakan fungsi WinHTTP secara asinkron. Secara default, semua fungsi WinHTTP yang menggunakan handel HINTERNET yang dikembalikan dilakukan secara sinkron. Saat bendera ini diatur, pemanggil perlu menentukan fungsi panggilan balik melalui WinHttpSetStatusCallback. |
|
Saat bendera ini diatur, WinHttp akan memerlukan penggunaan TLS 1.2 atau yang lebih baru. Jika penelepon mencoba mengaktifkan versi TLS yang lebih lama dengan mengatur WINHTTP_OPTION_SECURE_PROTOCOLS, pemanggil akan gagal dengan ERROR_ACCESS_DENIED. Selain itu, fallback TLS akan dinonaktifkan. Perhatikan bahwa mengatur bendera ini juga mengatur bendera WINHTTP_FLAG_ASYNC. |
Nilai kembali
Mengembalikan handel sesi yang valid jika berhasil, atau NULL sebaliknya. Untuk mengambil informasi kesalahan yang diperluas, panggil GetLastError. Di antara kode kesalahan yang dikembalikan adalah sebagai berikut.
Kode Kesalahan | Deskripsi |
---|---|
|
Terjadi kesalah internal. |
|
Memori tidak cukup tersedia untuk menyelesaikan operasi yang diminta. (Kode galat Windows) |
Keterangan
Kami sangat menyarankan Anda menggunakan WinHTTP dalam mode asinkron (yaitu, ketika WINHTTP_FLAG_ASYNC telah diatur di WinHttpOpen, sehingga penggunaan HINTERNET yang dikembalikan menjadi asinkron). Nilai yang dikembalikan menunjukkan keberhasilan atau kegagalan. Untuk mengambil informasi kesalahan yang diperluas, panggil GetLastError.
Fungsi WinHttpOpen adalah fungsi WinHTTP pertama yang dipanggil oleh aplikasi. Ini menginisialisasi struktur data WinHTTP internal dan mempersiapkan panggilan di masa mendatang dari aplikasi. Ketika aplikasi selesai menggunakan fungsi WinHTTP, aplikasi harus memanggil WinHttpCloseHandle untuk membebaskan handel sesi dan sumber daya terkait.
Aplikasi dapat melakukan sejumlah panggilan ke WinHttpOpen, meskipun satu panggilan biasanya cukup. Setiap panggilan ke WinHttpBuka membuka konteks sesi baru. Karena data pengguna tidak dibagi antara beberapa konteks sesi, aplikasi yang membuat permintaan atas nama beberapa pengguna harus membuat sesi terpisah untuk setiap pengguna, sehingga tidak berbagi cookie dan status autentikasi khusus pengguna. Aplikasi harus menentukan perilaku terpisah untuk setiap instans WinHttpOpen , seperti server proksi yang berbeda yang dikonfigurasi untuk masing-masing instans.
Setelah aplikasi panggilan selesai menggunakan handel HINTERNET yang dikembalikan oleh WinHttpOpen, aplikasi harus ditutup menggunakan fungsi WinHttpCloseHandle .
Contoh
Contoh kode berikut menunjukkan cara mengambil nilai batas waktu koneksi default.
DWORD data;
DWORD dwSize = sizeof(DWORD);
// Use WinHttpOpen to obtain an HINTERNET handle.
HINTERNET hSession = WinHttpOpen(L"A WinHTTP Example Program/1.0",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
if (hSession)
{
// Use WinHttpQueryOption to retrieve internet options.
if (WinHttpQueryOption( hSession,
WINHTTP_OPTION_CONNECT_TIMEOUT,
&data, &dwSize))
{
printf("Connection timeout: %u ms\n\n",data);
}
else
{
printf( "Error %u in WinHttpQueryOption.\n",
GetLastError());
}
// When finished, release the HINTERNET handle.
WinHttpCloseHandle(hSession);
}
else
{
printf("Error %u in WinHttpOpen.\n", GetLastError());
}
Persyaratan
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] |
Target Platform | Windows |
Header | winhttp.h |
Pustaka | Winhttp.lib |
DLL | Winhttp.dll |
Redistribusi | WinHTTP 5.0 dan Internet Explorer 5.01 atau yang lebih baru pada Windows XP dan Windows 2000. |