Método IWinHttpRequest::WaitForResponse
El método WaitForResponse espera a que se complete un método Send asincrónico, con un valor de tiempo de espera opcional, en segundos.
Sintaxis
HRESULT WaitForResponse(
[in, optional] VARIANT Timeout,
[out, retval] VARIANT_BOOL *Succeeded
);
Parámetros
-
Tiempo de espera [in, opcional]
-
Valor de tiempo de espera, en segundos. El tiempo de espera predeterminado es infinito. Para establecer explícitamente el tiempo de espera en infinito, use el valor -1.
-
Correcto [out, retval]
-
Recibe uno de los valores siguientes.
Valor Significado - VARIANT_TRUE
Se ha recibido una respuesta. - VARIANT_FALSE
Se superó el período de tiempo de espera especificado.
Valor devuelto
El valor devuelto se S_OK si se ejecuta correctamente o un valor de error de lo contrario.
Observaciones
Este método suspende la ejecución mientras espera una respuesta a una solicitud asincrónica. Se debe llamar a este método después de enviar. Las aplicaciones que llaman pueden especificar un valor de tiempo de espera opcional, en segundos. Si se agota el tiempo de espera de este método, la solicitud no se anula. De este modo, la aplicación que realiza la llamada puede seguir esperando la solicitud, si lo desea, en una llamada posterior a este método.
Llamar a esta propiedad después de que un método Send sincrónico devuelva inmediatamente y no tenga ningún efecto.
Nota
Para Windows XP y Windows 2000, consulte la sección Requisitos en tiempo de ejecución de la página de inicio de WinHTTP.
Ejemplos
En el ejemplo siguiente se muestra cómo abrir una conexión HTTP asincrónica, enviar una solicitud HTTP, esperar la respuesta y leer el texto de la respuesta.
#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;
}
En el siguiente ejemplo de scripting se muestra cómo abrir una conexión HTTP asincrónica, enviar una solicitud HTTP, esperar una respuesta y leer el texto de la respuesta.
// 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);
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows XP, Windows 2000 Professional con SP3 [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
Windows Server 2003, Windows 2000 Server con SP3 [solo aplicaciones de escritorio] |
Redistribuible |
WinHTTP 5.0 e Internet Explorer 5.01 o posterior en Windows XP y Windows 2000. |
IDL |
|
Biblioteca |
|
Archivo DLL |
|