Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Metode SetTimeouts menentukan komponen waktu habis individual dari operasi kirim/terima, dalam milidetik.
Sintaks
HRESULT SetTimeouts(
[in] long ResolveTimeout,
[in] long ConnectTimeout,
[in] long SendTimeout,
[in] long ReceiveTimeout
);
Parameter
-
ResolveTimeout [in]
-
Nilai waktu habis diterapkan saat menyelesaikan nama host (seperti
www.microsoft.com) ke alamat IP (seperti 192.168.131.199), dalam milidetik. Nilai defaultnya adalah nol, yang berarti tidak ada waktu habis (tak terbatas). Jika batas waktu DNS ditentukan menggunakan NAME_RESOLUTION_TIMEOUT, ada overhead satu utas per permintaan. -
ConnectTimeout [in]
-
Nilai waktu habis diterapkan saat membuat soket komunikasi dengan server target, dalam milidetik. Nilai defaultnya adalah 60.000 (60 detik).
-
SendTimeout [in]
-
Nilai waktu habis diterapkan saat mengirim paket individu data permintaan pada soket komunikasi ke server target, dalam milidetik. Permintaan besar yang dikirim ke server HTTP biasanya dipecah menjadi beberapa paket; waktu pengiriman habis berlaku untuk mengirim setiap paket satu per satu. Nilai defaultnya adalah 30.000 (30 detik).
-
ReceiveTimeout [in]
-
Nilai waktu habis diterapkan saat menerima paket data respons dari server target, dalam milidetik. Respons besar dipecah menjadi beberapa paket; waktu habis terima berlaku untuk mengambil setiap paket data dari soket. Nilai defaultnya adalah 30.000 (30 detik).
Menampilkan nilai
Nilai yang dikembalikan S_OK pada keberhasilan atau nilai kesalahan jika tidak.
Keterangan
Semua parameter diperlukan. Nilai 0 atau -1 menetapkan waktu habis untuk menunggu tanpa batas. 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 metode ini gagal.
Nilai waktu habis diterapkan pada lapisan Winsock.
Catatan
Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di halaman mulai WinHttp.
Contoh
Contoh berikut menunjukkan cara mengatur semua batas waktu WinHTTP menjadi 30 detik, membuka koneksi HTTP, mengirim permintaan HTTP, dan membaca teks respons.
#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;
CLSID clsid;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BOOL;
V_BOOL(&varFalse) = VARIANT_FALSE;
VariantInit(&varEmpty);
V_VT(&varEmpty) = VT_ERROR;
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))
{ // Set Time-outs.
hr = pIWinHttpRequest->SetTimeouts(30000, 30000,
30000, 30000);
}
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->GetAllResponseHeaders(&bstrResponse);
}
if (SUCCEEDED(hr))
{ // Print response to console.
wprintf(L"%.256s",bstrResponse);
}
// Release memory.
if (pIWinHttpRequest)
pIWinHttpRequest->Release();
if (bstrResponse)
SysFreeString(bstrResponse);
CoUninitialize();
return 0;
}
Contoh pembuatan skrip berikut ini memperlihatkan cara mengatur semua batas waktu WinHTTP menjadi 30 detik, membuka koneksi HTTP, dan mengirim permintaan HTTP.
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Set time-outs. If time-outs are set, they must
// be set before open.
WinHttpReq.SetTimeouts(30000, 30000, 30000, 30000);
// Initialize an HTTP request.
WinHttpReq.Open("GET", "https://www.microsoft.com", false);
// Send the HTTP request.
WinHttpReq.Send();
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 |
|
| Pustaka |
|
| DLL |
|