Metode IWinHttpRequest::WaitForResponse
Metode WaitForResponse menunggu metode Kirim asinkron selesai, dengan nilai batas waktu opsional, dalam hitungan detik.
Sintaks
HRESULT WaitForResponse(
[in, optional] VARIANT Timeout,
[out, retval] VARIANT_BOOL *Succeeded
);
Parameter
-
Waktu habis [masuk, opsional]
-
Nilai waktu habis, dalam detik. Waktu habis default tidak terbatas. Untuk secara eksplisit mengatur waktu habis ke tak terbatas, gunakan nilai -1.
-
Berhasil [out, retval]
-
Menerima salah satu nilai berikut.
Nilai Makna - VARIANT_TRUE
Respons telah diterima. - VARIANT_FALSE
Periode waktu habis yang ditentukan terlampaui.
Nilai kembali
Nilai yang dikembalikan S_OK pada keberhasilan atau nilai kesalahan jika tidak.
Keterangan
Metode ini menangguhkan eksekusi sambil menunggu respons terhadap permintaan asinkron. Metode ini harus dipanggil setelah Kirim. Aplikasi panggilan dapat menentukan nilai Batas Waktu opsional, dalam detik. Jika metode ini kehabisan waktu, permintaan tidak dibatalkan. Dengan cara ini, aplikasi panggilan dapat terus menunggu permintaan, jika diinginkan, dalam panggilan berikutnya ke metode ini.
Memanggil properti ini setelah metode Kirim sinkron segera kembali dan tidak berpengaruh.
Catatan
Untuk Windows XP dan Windows 2000, lihat bagian Persyaratan Run-Time di Halaman Mulai WinHTTP.
Contoh
Contoh berikut menunjukkan cara membuka koneksi HTTP asinkron, mengirim permintaan HTTP, menunggu respons 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 varTrue;
VARIANT varEmpty;
CLSID clsid;
VariantInit(&varTrue);
V_VT(&varTrue) = VT_BOOL;
V_BOOL(&varTrue) = VARIANT_TRUE;
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))
{ // Open WinHttpRequest.
BSTR bstrMethod = SysAllocString(L"GET");
BSTR bstrUrl = SysAllocString(L"https://microsoft.com");
hr = pIWinHttpRequest->Open(bstrMethod, bstrUrl, varTrue);
SysFreeString(bstrMethod);
SysFreeString(bstrUrl);
}
if (SUCCEEDED(hr))
{ // Send Request.
hr = pIWinHttpRequest->Send(varEmpty);
}
if (SUCCEEDED(hr))
{ // Wait for response.
VARIANT_BOOL varResult;
hr = pIWinHttpRequest->WaitForResponse(varEmpty, &varResult);
}
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 (bstrResponse)
SysFreeString(bstrResponse);
CoUninitialize();
return 0;
}
Contoh pembuatan skrip berikut menunjukkan cara membuka koneksi HTTP asinkron, mengirim permintaan HTTP, menunggu respons, dan membaca teks respons.
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Initialize an HTTP request.
WinHttpReq.Open("GET", "https://www.microsoft.com", true);
// Send the HTTP request.
WinHttpReq.Send();
// Wait for the response.
WinHttpReq.WaitForResponse();
// 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 di Windows XP dan Windows 2000. |
IDL |
|
Pustaka |
|
DLL |
|