Bagikan melalui


Fungsi WinHttpSetTimeouts (winhttp.h)

Fungsi WinHttpSetTimeouts mengatur waktu habis yang terlibat dengan transaksi HTTP.

Sintaks

WINHTTPAPI BOOL WinHttpSetTimeouts(
  [in] HINTERNET hInternet,
  [in] int       nResolveTimeout,
  [in] int       nConnectTimeout,
  [in] int       nSendTimeout,
  [in] int       nReceiveTimeout
);

Parameter

[in] hInternet

Handel HINTERNET yang dikembalikan oleh WinHttpOpen atau WinHttpOpenRequest.

[in] nResolveTimeout

Nilai bilangan bulat jenis yang menentukan nilai waktu habis, dalam milidetik, untuk digunakan untuk resolusi nama. Jika resolusi membutuhkan waktu lebih lama dari nilai waktu habis ini, maka permintaan dibatalkan. Nilai awal adalah nol, yang berarti tidak ada waktu habis (tak terbatas).

Windows Vista dan Windows XP: Jika batas waktu DNS ditentukan menggunakan NAME_RESOLUTION_TIMEOUT, ada overhead satu utas per permintaan.

[in] nConnectTimeout

Nilai bilangan bulat jenis yang menentukan nilai waktu habis, dalam milidetik, untuk digunakan untuk permintaan koneksi server. Jika permintaan koneksi membutuhkan waktu lebih lama dari nilai waktu habis ini, permintaan dibatalkan. Nilai awal adalah 60.000 (60 detik).

TCP/IP dapat kehabisan waktu saat menyiapkan soket selama pertukaran SYN/ACK tiga kaki, terlepas dari nilai parameter ini.

[in] nSendTimeout

Nilai bilangan bulat jenis yang menentukan nilai waktu habis, dalam milidetik, untuk digunakan untuk mengirim permintaan. Jika mengirim permintaan membutuhkan waktu lebih lama dari nilai waktu habis ini, pengiriman dibatalkan. Nilai awal adalah 30.000 (30 detik).

[in] nReceiveTimeout

Nilai bilangan bulat jenis yang menentukan nilai waktu habis, dalam milidetik, untuk menerima respons terhadap permintaan. Jika respons membutuhkan waktu lebih lama dari nilai batas waktu ini, permintaan dibatalkan. Nilai awal adalah 30.000 (30 detik).

Mengembalikan nilai

Mengembalikan TRUE jika berhasil, atau FALSE sebaliknya. Untuk informasi kesalahan yang diperluas, hubungi GetLastError. Di antara kode kesalahan yang dikembalikan adalah sebagai berikut.

Kode Kesalahan Deskripsi
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Operasi yang diminta tidak dapat dilakukan karena handel yang diberikan tidak dalam keadaan benar.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Jenis handel yang disediakan salah untuk operasi ini.
ERROR_WINHTTP_INTERNAL_ERROR
Terjadi kesalah internal.
ERROR_NOT_ENOUGH_MEMORY
Tidak tersedia cukup memori untuk menyelesaikan operasi yang diminta. (Kode galat Windows)
ERROR_INVALID_PARAMETER
Satu atau beberapa parameter batas waktu memiliki nilai negatif selain -1.

Keterangan

Bahkan ketika WinHTTP digunakan dalam mode asinkron (yaitu, ketika WINHTTP_FLAG_ASYNC telah diatur di WinHttpOpen), fungsi ini beroperasi secara sinkron. Nilai yang dikembalikan menunjukkan keberhasilan atau kegagalan. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Nilai 0 atau -1 menetapkan waktu habis untuk menunggu tanpa batas waktu. Nilai yang lebih besar dari 0 menetapkan nilai waktu habis dalam milidetik. Misalnya, 30.000 akan mengatur waktu habis menjadi 30 detik. Semua nilai negatif selain -1 menyebabkan fungsi gagal dengan ERROR_INVALID_PARAMETER.

Penting Jika batas waktu kecil diatur menggunakan WinHttpSetOption dan WINHTTP_OPTION_RECEIVE_TIMEOUT, itu bisa mengganti nilai yang ditetapkan dengan parameter dwReceiveTimeout , menyebabkan respons berakhir lebih awal dari yang diharapkan. Untuk menghindari hal ini, jangan atur batas waktu dengan opsi WINHTTP_OPTION_RECEIVE_TIMEOUT yang lebih kecil dari nilai yang ditetapkan menggunakan dwReceiveTimeout.
 
Catatan Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di halaman mulai WinHTTP.
 

Contoh

Contoh ini memperlihatkan cara mengatur nilai batas waktu baru menggunakan WinHttpSetTimeouts.

    // 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 WinHttpSetTimeouts to set a new time-out values.
        if (!WinHttpSetTimeouts( hSession, 10000, 10000, 10000, 10000))
            printf( "Error %u in WinHttpSetTimeouts.\n", GetLastError());
              
        // PLACE ADDITIONAL CODE HERE.
    
        // When finished, release the HINTERNET handle.
        WinHttpCloseHandle(hSession);
    }
    else
    {
        printf("Error %u in WinHttpOpen.\n", GetLastError());
    }

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]
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 di Windows XP dan Windows 2000.

Lihat juga

Tentang Microsoft Windows HTTP Services (WinHTTP)

Versi WinHTTP

WinHttpCloseHandle

WinHttpConnect

WinHttpBuka

WinHttpOpenRequest