IWinHttpRequest::SetTimeouts, méthode
La méthode SetTimeouts spécifie les composants individuels du délai d’attente d’une opération d’envoi/réception, en millisecondes.
Syntaxe
HRESULT SetTimeouts(
[in] long ResolveTimeout,
[in] long ConnectTimeout,
[in] long SendTimeout,
[in] long ReceiveTimeout
);
Paramètres
-
ResolveTimeout [in]
-
Valeur de délai d’attente appliquée lors de la résolution d’un nom d’hôte (tel que
www.microsoft.com
) à une adresse IP (par exemple, 192.168.131.199), en millisecondes. La valeur par défaut est zéro, ce qui signifie qu’il n’y a pas de délai d’attente (infini). Si le délai d’expiration DNS est spécifié à l’aide de NAME_RESOLUTION_TIMEOUT, il y a une surcharge d’un thread par demande. -
ConnectTimeout [in]
-
Valeur de délai d’attente appliquée lors de l’établissement d’un socket de communication avec le serveur cible, en millisecondes. La valeur par défaut est 60,000 (60 secondes).
-
SendTimeout [in]
-
Valeur de délai d’attente appliquée lors de l’envoi d’un paquet individuel de données de requête sur le socket de communication au serveur cible, en millisecondes. Une requête volumineuse envoyée à un serveur HTTP est normalement divisée en plusieurs paquets ; le délai d’attente d’envoi s’applique à l’envoi de chaque paquet individuellement. La valeur par défaut est 30 000 (30 secondes).
-
ReceiveTimeout [in]
-
Valeur de délai d’attente appliquée lors de la réception d’un paquet de données de réponse du serveur cible, en millisecondes. Les réponses volumineuses sont divisées en plusieurs paquets ; Le délai d’attente de réception s’applique à l’extraction de chaque paquet de données du socket. La valeur par défaut est 30 000 (30 secondes).
Valeur retournée
La valeur de retour est S_OK en cas de réussite ou une valeur d’erreur dans le cas contraire.
Notes
Tous les paramètres sont obligatoires. La valeur 0 ou -1 définit un délai d’attente infini. Une valeur supérieure à 0 définit la valeur du délai d’attente en millisecondes. Par exemple, 30 000 définissent le délai d’attente sur 30 secondes. Toutes les valeurs négatives autres que -1 entraînent l’échec de cette méthode.
Les valeurs de délai d’attente sont appliquées à la couche Winsock.
Notes
Pour Windows XP et Windows 2000, consultez la section Conditions requises pour l’exécution de la page de démarrage WinHttp.
Exemples
L’exemple suivant montre comment définir tous les délais d’attente WinHTTP sur 30 secondes, ouvrir une connexion HTTP, envoyer une requête HTTP 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 varFalse;
VARIANT varEmpty;
CLSID clsid;
VariantInit(&varFalse);
V_VT(&varFalse) = VT_BOOL;
V_BOOL(&varFalse) = VARIANT_FALSE;
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))
{ // Set Time-outs.
hr = pIWinHttpRequest->SetTimeouts(30000, 30000,
30000, 30000);
}
if (SUCCEEDED(hr))
{ // Open WinHttpRequest.
BSTR bstrMethod = SysAllocString(L"GET");
BSTR bstrUrl = SysAllocString(L"https://microsoft.com");
hr = pIWinHttpRequest->Open(bstrMethod,
bstrUrl,
varFalse);
SysFreeString(bstrMethod);
SysFreeString(bstrUrl);
}
if (SUCCEEDED(hr))
{ // Send Request.
hr = pIWinHttpRequest->Send(varEmpty);
}
if (SUCCEEDED(hr))
{ // Get Response text.
hr = pIWinHttpRequest->GetAllResponseHeaders(&bstrResponse);
}
if (SUCCEEDED(hr))
{ // Print response to 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 définir tous les délais d’attente WinHTTP sur 30 secondes, ouvrir une connexion HTTP et envoyer une requête HTTP.
// Instantiate a WinHttpRequest object.
var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
// Set time-outs. If time-outs are set, they must
// be set before open.
WinHttpReq.SetTimeouts(30000, 30000, 30000, 30000);
// Initialize an HTTP request.
WinHttpReq.Open("GET", "https://www.microsoft.com", false);
// Send the HTTP request.
WinHttpReq.Send();
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 |
|