Partager via


Fonction WinHttpSetTimeouts (winhttp.h)

La fonction WinHttpSetTimeouts définit les délais d’expiration impliqués dans les transactions HTTP.

Syntaxe

WINHTTPAPI BOOL WinHttpSetTimeouts(
  [in] HINTERNET hInternet,
  [in] int       nResolveTimeout,
  [in] int       nConnectTimeout,
  [in] int       nSendTimeout,
  [in] int       nReceiveTimeout
);

Paramètres

[in] hInternet

Handle HINTERNET retourné par WinHttpOpen ou WinHttpOpenRequest.

[in] nResolveTimeout

Valeur de type entier qui spécifie la valeur de délai d’attente, en millisecondes, à utiliser pour la résolution de noms. Si la résolution prend plus de temps que cette valeur de délai d’attente, la demande est annulée. La valeur initiale est zéro, ce qui signifie aucun délai d’attente (infini).

Windows Vista et Windows XP : 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 requête.

[in] nConnectTimeout

Valeur de type integer qui spécifie la valeur de délai d’attente, en millisecondes, à utiliser pour les demandes de connexion au serveur. Si une demande de connexion prend plus de temps que cette valeur de délai d’attente, la demande est annulée. La valeur initiale est 60 000 (60 secondes).

TCP/IP peut expirer lors de la configuration du socket pendant l’échange SYN/ACK à trois jambes, quelle que soit la valeur de ce paramètre.

[in] nSendTimeout

Valeur de type integer qui spécifie la valeur de délai d’attente, en millisecondes, à utiliser pour l’envoi de requêtes. Si l’envoi d’une requête prend plus de temps que cette valeur de délai d’attente, l’envoi est annulé. La valeur initiale est 30 000 (30 secondes).

[in] nReceiveTimeout

Valeur de type integer qui spécifie la valeur de délai d’attente, en millisecondes, pour recevoir une réponse à une requête. Si une réponse prend plus de temps que cette valeur de délai d’attente, la demande est annulée. La valeur initiale est 30 000 (30 secondes).

Valeur retournée

Retourne LA valeur TRUE si elle réussit ou FALSE dans le cas contraire. Pour obtenir des informations d’erreur étendues, appelez GetLastError. Parmi les codes d’erreur retournés figurent les suivants.

Code d'erreur Description
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
L’opération demandée ne peut pas être effectuée, car le handle fourni n’est pas dans l’état correct.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Le type de handle fourni est incorrect pour cette opération.
ERROR_WINHTTP_INTERNAL_ERROR
Une erreur interne s'est produite.
ERROR_NOT_ENOUGH_MEMORY
La mémoire disponible n’était pas suffisante pour effectuer l’opération demandée. (Code d’erreur Windows)
ERROR_INVALID_PARAMETER
Un ou plusieurs des paramètres de délai d’expiration ont une valeur négative autre que -1.

Remarques

Même lorsque WinHTTP est utilisé en mode asynchrone (c’est-à-dire, lorsque WINHTTP_FLAG_ASYNC a été défini dans WinHttpOpen), cette fonction fonctionne de manière synchrone. La valeur de retour indique la réussite ou l’échec. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

La valeur 0 ou -1 définit un délai d’attente infini. Une valeur supérieure à 0 définit la valeur de 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 la fonction avec ERROR_INVALID_PARAMETER.

Important Si un petit délai d’attente est défini à l’aide de WinHttpSetOption et d’WINHTTP_OPTION_RECEIVE_TIMEOUT, il peut remplacer la valeur définie par le paramètre dwReceiveTimeout , ce qui entraîne la fin d’une réponse plus tôt que prévu. Pour éviter cela, ne définissez pas de délai d’expiration avec l’option WINHTTP_OPTION_RECEIVE_TIMEOUT plus petite que la valeur définie à l’aide de dwReceiveTimeout.
 
Note Pour Windows XP et Windows 2000, consultez la section Conditions d’exécution de la page de démarrage de WinHTTP.
 

Exemples

Cet exemple montre comment définir de nouvelles valeurs de délai d’attente à l’aide de WinHttpSetTimeouts.

    // Use WinHttpOpen to obtain an HINTERNET handle.
    HINTERNET hSession = WinHttpOpen(L"A WinHTTP Example Program/1.0", 
                                    WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
                                    WINHTTP_NO_PROXY_NAME, 
                                    WINHTTP_NO_PROXY_BYPASS, 0);
    if (hSession)
    {
        // Use WinHttpSetTimeouts to set a new time-out values.
        if (!WinHttpSetTimeouts( hSession, 10000, 10000, 10000, 10000))
            printf( "Error %u in WinHttpSetTimeouts.\n", GetLastError());
              
        // PLACE ADDITIONAL CODE HERE.
    
        // When finished, release the HINTERNET handle.
        WinHttpCloseHandle(hSession);
    }
    else
    {
        printf("Error %u in WinHttpOpen.\n", GetLastError());
    }

Configuration requise

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]
Plateforme cible Windows
En-tête winhttp.h
Bibliothèque Winhttp.lib
DLL Winhttp.dll
Composant redistribuable WinHTTP 5.0 et Internet Explorer 5.01 ou version ultérieure sur Windows XP et Windows 2000.

Voir aussi

À propos de Microsoft Windows HTTP Services (WinHTTP)

WinHTTP Versions

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest