Freigeben über


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
HttpRequest.idl
Bibliothek
Winhttp.lib
DLL
Winhttp.dll

Siehe auch

IWinHttpRequest

WinHttpRequest

Öffnen

WinHTTP-Versionen