IWinHttpRequest::WaitForResponse-Methode
Die WaitForResponse-Methode wartet in Sekunden, bis eine asynchrone Send-Methode mit optionalem Timeoutwert abgeschlossen ist.
Syntax
HRESULT WaitForResponse(
[in, optional] VARIANT Timeout,
[out, retval] VARIANT_BOOL *Succeeded
);
Parameter
-
Timeout [in, optional]
-
Timeoutwert in Sekunden. Das Standardtimeout ist unendlich. Um timeout explizit auf unendlich festzulegen, verwenden Sie den Wert -1.
-
Erfolgreich [out, retval]
-
Empfängt einen der folgenden Werte.
Wert Bedeutung - VARIANT_TRUE
Eine Antwort wurde empfangen. - VARIANT_FALSE
Der angegebene Timeoutzeitraum wurde überschritten.
Rückgabewert
Der Rückgabewert wird bei Erfolg S_OK oder andernfalls ein Fehlerwert.
Bemerkungen
Diese Methode hält die Ausführung an, während auf eine Antwort auf eine asynchrone Anforderung gewartet wird. Diese Methode sollte nach einem Send-Element aufgerufen werden. Aufrufende Anwendungen können einen optionalen Timeoutwert in Sekunden angeben. Wenn für diese Methode ein Zeitüberschreitungsüberschreitung besteht, wird die Anforderung nicht abgebrochen. Auf diese Weise kann die aufrufende Anwendung bei Bedarf weiterhin auf die Anforderung in einem nachfolgenden Aufruf dieser Methode warten.
Das Aufrufen dieser Eigenschaft, nachdem eine synchrone Send-Methode sofort zurückgegeben wurde, hat keine Auswirkung.
Hinweis
Informationen zu Windows XP und Windows 2000 finden Sie im Abschnitt Laufzeitanforderungen der WinHTTP-Startseite .
Beispiele
Das folgende Beispiel zeigt, wie Sie eine asynchrone HTTP-Verbindung öffnen, eine HTTP-Anforderung senden, auf die Antwort warten und den Antworttext lesen.
#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;
}
Das folgende Skriptbeispiel zeigt, wie Sie eine asynchrone HTTP-Verbindung öffnen, eine HTTP-Anforderung senden, auf eine Antwort warten und den Antworttext lesen.
// 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);
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows XP, Windows 2000 Professional mit SP3 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows Server 2003, Windows 2000 Server mit SP3 [nur Desktop-Apps] |
Verteilbare Komponente |
WinHTTP 5.0 und Internet Explorer 5.01 oder höher unter Windows XP und Windows 2000. |
IDL |
|
Bibliothek |
|
DLL |
|