Méthode IWinHttpRequest::WaitForResponse
La méthode WaitForResponse attend qu’une méthode Send asynchrone se termine, avec une valeur de délai d’expiration facultative, en secondes.
Syntaxe
HRESULT WaitForResponse(
[in, optional] VARIANT Timeout,
[out, retval] VARIANT_BOOL *Succeeded
);
Paramètres
-
Délai d’expiration [in, facultatif]
-
Valeur de délai d’expiration, en secondes. Le délai d’attente par défaut est infini. Pour définir explicitement le délai d’attente sur infini, utilisez la valeur -1.
-
Réussi [out, retval]
-
Reçoit l’une des valeurs suivantes.
Valeur Signification - VARIANT_TRUE
Une réponse a été reçue. - VARIANT_FALSE
Le délai d’attente spécifié a été dépassé.
Valeur retournée
La valeur de retour est S_OK sur la réussite ou une valeur d’erreur dans le cas contraire.
Notes
Cette méthode interrompt l’exécution en attendant une réponse à une requête asynchrone. Cette méthode doit être appelée après un envoi. Les applications appelantes peuvent spécifier une valeur de délai d’expiration facultative, en secondes. Si cette méthode expire, la demande n’est pas abandonnée. De cette façon, l’application appelante peut continuer à attendre la demande, si vous le souhaitez, dans un appel ultérieur à cette méthode.
L’appel de cette propriété après une méthode Send synchrone retourne immédiatement et n’a aucun effet.
Notes
Pour Windows XP et Windows 2000, consultez la section Conditions d’exécution de la page de démarrage WinHTTP.
Exemples
L’exemple suivant montre comment ouvrir une connexion HTTP asynchrone, envoyer une requête HTTP, attendre la réponse et lire le texte de la réponse.
#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;
}
L’exemple de script suivant montre comment ouvrir une connexion HTTP asynchrone, envoyer une requête HTTP, attendre une réponse et lire le texte de la réponse.
// 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);
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows XP, Windows 2000 Professionnel avec SP3 [applications de bureau uniquement] |
Serveur minimal pris en charge |
Windows Server 2003, Windows 2000 Server avec SP3 [applications de bureau uniquement] |
Composant redistribuable |
WinHTTP 5.0 et Internet Explorer 5.01 ou version ultérieure sur Windows XP et Windows 2000. |
IDL |
|
Bibliothèque |
|
DLL |
|