Condividi tramite


Funzione WinHttpSetTimeouts (winhttp.h)

La funzione WinHttpSetTimeouts imposta i timeout coinvolti nelle transazioni HTTP.

Sintassi

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

Parametri

[in] hInternet

Handle DELL'oggetto PROMPTNET restituito da WinHttpOpen o WinHttpOpenRequest.

[in] nResolveTimeout

Valore di tipo integer che specifica il valore di timeout, espresso in millisecondi, da utilizzare per la risoluzione dei nomi. Se la risoluzione richiede più tempo di questo valore di timeout, la richiesta viene annullata. Il valore iniziale è zero, ovvero nessun timeout (infinito).

Windows Vista e Windows XP: Se il timeout DNS viene specificato usando NAME_RESOLUTION_TIMEOUT, si verifica un sovraccarico di un thread per ogni richiesta.

[in] nConnectTimeout

Valore di tipo integer che specifica il valore di timeout, espresso in millisecondi, da utilizzare per le richieste di connessione del server. Se una richiesta di connessione richiede più tempo di questo valore di timeout, la richiesta viene annullata. Il valore iniziale è 60.000 (60 secondi).

TCP/IP può verificarsi un timeout durante la configurazione del socket durante lo scambio SYN/ACK a tre gambe, indipendentemente dal valore di questo parametro.

[in] nSendTimeout

Valore di tipo integer che specifica il valore di timeout, espresso in millisecondi, da utilizzare per l'invio di richieste. Se l'invio di una richiesta richiede più tempo di questo valore di timeout, l'invio viene annullato. Il valore iniziale è 30.000 (30 secondi).

[in] nReceiveTimeout

Valore di tipo integer che specifica il valore di timeout, espresso in millisecondi, per ricevere una risposta a una richiesta. Se una risposta richiede più tempo di questo valore di timeout, la richiesta viene annullata. Il valore iniziale è 30.000 (30 secondi).

Valore restituito

Restituisce TRUE se l'operazione riesce o FALSE in caso contrario. Per informazioni sugli errori estesi, chiamare GetLastError. Tra i codici di errore restituiti sono riportati di seguito.

Codice di errore Descrizione
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Impossibile eseguire l'operazione richiesta perché l'handle fornito non è nello stato corretto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Il tipo di handle fornito non è corretto per questa operazione.
ERROR_WINHTTP_INTERNAL_ERROR
Si è verificato un errore interno.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente per completare l'operazione richiesta. (Codice errore di Windows)
ERROR_INVALID_PARAMETER
Uno o più parametri di timeout hanno un valore negativo diverso da -1.

Commenti

Anche quando WinHTTP viene usato in modalità asincrona , ovvero quando WINHTTP_FLAG_ASYNC è stato impostato in WinHttpOpen, questa funzione funziona in modo sincrono. Il valore restituito indica l'esito positivo o negativo. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Il valore 0 o -1 imposta un timeout per l'attesa infinita. Un valore maggiore di 0 imposta il valore di timeout in millisecondi. Ad esempio, 30.000 imposta il timeout su 30 secondi. Tutti i valori negativi diversi da -1 causano l'esito negativo della funzione con ERROR_INVALID_PARAMETER.

Importante Se un timeout ridotto viene impostato usando WinHttpSetOption e WINHTTP_OPTION_RECEIVE_TIMEOUT, può eseguire l'override del valore impostato con il parametro dwReceiveTimeout , causando la chiusura di una risposta prima del previsto. Per evitare questo problema, non impostare un timeout con l'opzione WINHTTP_OPTION_RECEIVE_TIMEOUT minore del valore impostato usando dwReceiveTimeout.
 
Nota Per Windows XP e Windows 2000, vedere la sezione Requisiti di runtime della pagina iniziale di WinHTTP.
 

Esempio

Questo esempio mostra come impostare nuovi valori di timeout usando 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());
    }

Requisiti

Requisito Valore
Client minimo supportato Windows XP, Windows 2000 Professional con SP3 [solo app desktop]
Server minimo supportato Windows Server 2003, Windows 2000 Server con SP3 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winhttp.h
Libreria Winhttp.lib
DLL Winhttp.dll
Componente ridistribuibile WinHTTP 5.0 e Internet Explorer 5.01 o versione successiva in Windows XP e Windows 2000.

Vedi anche

Informazioni sui servizi HTTP di Microsoft Windows (WinHTTP)

Versioni di WinHTTP

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest