WinHttpSetTimeouts-Funktion (winhttp.h)

Die WinHttpSetTimeouts-Funktion legt Timeouts fest, die für HTTP-Transaktionen erforderlich sind.

Syntax

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

Parameter

[in] hInternet

Das von WinHttpOpen oder WinHttpOpenRequest zurückgegebene HINTERNET-Handle.

[in] nResolveTimeout

Ein Wert vom Typ Integer, der den Timeoutwert in Millisekunden angibt, der für die Namensauflösung verwendet werden soll. Wenn die Auflösung länger dauert als dieser Timeoutwert, wird die Anforderung abgebrochen. Der Anfangswert ist 0, d. h. kein Timeout (unendlich).

Windows Vista und Windows XP: Wenn das DNS-Timeout mithilfe von NAME_RESOLUTION_TIMEOUT angegeben wird, entsteht ein Mehraufwand von einem Thread pro Anforderung.

[in] nConnectTimeout

Ein Wert vom Typ Integer, der den Timeoutwert in Millisekunden angibt, der für Serververbindungsanforderungen verwendet werden soll. Wenn eine Verbindungsanforderung länger als dieser Timeoutwert dauert, wird die Anforderung abgebrochen. Der Anfangswert ist 60.000 (60 Sekunden).

TCP/IP kann beim Einrichten des Sockets während des SYN/ACK-Austauschs an drei Etappen ein Timeout aufweisen, unabhängig vom Wert dieses Parameters.

[in] nSendTimeout

Ein Wert vom Typ Integer, der den Timeoutwert in Millisekunden angibt, der zum Senden von Anforderungen verwendet werden soll. Wenn das Senden einer Anforderung länger dauert als dieser Timeoutwert, wird der Sendevorgang abgebrochen. Der Anfangswert ist 30.000 (30 Sekunden).

[in] nReceiveTimeout

Ein Wert vom Typ Integer, der den Timeoutwert in Millisekunden angibt, um eine Antwort auf eine Anforderung zu empfangen. Wenn eine Antwort länger dauert als dieser Timeoutwert, wird die Anforderung abgebrochen. Der Anfangswert ist 30.000 (30 Sekunden).

Rückgabewert

Gibt TRUE zurück, wenn der Vorgang erfolgreich war, oder andernfalls FALSE . Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten. Zu den zurückgegebenen Fehlercodes gehören die folgenden.

Fehlercode BESCHREIBUNG
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Der angeforderte Vorgang kann nicht ausgeführt werden, da sich der angegebene Handle nicht im richtigen Zustand befindet.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Der Typ des angegebenen Handles ist für diesen Vorgang falsch.
ERROR_WINHTTP_INTERNAL_ERROR
Ein interner Fehler ist aufgetreten.
ERROR_NOT_ENOUGH_MEMORY
Für den angeforderten Vorgang war nicht genügend Arbeitsspeicher verfügbar. (Windows-Fehlercode)
ERROR_INVALID_PARAMETER
Mindestens ein Timeoutparameter weist einen anderen negativen Wert als -1 auf.

Hinweise

Auch wenn WinHTTP im asynchronen Modus verwendet wird (d. h. wenn WINHTTP_FLAG_ASYNC in WinHttpOpen festgelegt wurde), arbeitet diese Funktion synchron. Der Rückgabewert weist auf Erfolg oder Fehler hin. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Ein Wert von 0 oder -1 legt ein Timeout für unendliches Warten fest. Ein Wert größer als 0 legt den Timeoutwert in Millisekunden fest. Beispielsweise würden 30.000 das Timeout auf 30 Sekunden festlegen. Alle negativen Werte außer -1 führen dazu, dass die Funktion mit ERROR_INVALID_PARAMETER fehlschlägt.

Wichtig Wenn ein kleines Timeout mithilfe von WinHttpSetOption und WINHTTP_OPTION_RECEIVE_TIMEOUT festgelegt wird, kann der wertsatz mit dem dwReceiveTimeout-Parameter überschrieben werden, sodass eine Antwort früher als erwartet beendet wird. Um dies zu vermeiden, legen Sie kein Timeout mit der option WINHTTP_OPTION_RECEIVE_TIMEOUT fest, das kleiner als der mit dwReceiveTimeout festgelegte Wert ist.
 
Hinweis Informationen zu Windows XP und Windows 2000 finden Sie im Abschnitt Laufzeitanforderungen der WinHTTP-Startseite .
 

Beispiele

In diesem Beispiel wird gezeigt, wie Sie mit WinHttpSetTimeouts neue Timeoutwerte festlegen.

    // 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());
    }

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP, Windows 2000 Professional mit SP3 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003, Windows 2000 Server mit SP3 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winhttp.h
Bibliothek Winhttp.lib
DLL Winhttp.dll
Verteilbare Komponente WinHTTP 5.0 und Internet Explorer 5.01 oder höher unter Windows XP und Windows 2000.

Weitere Informationen

Informationen zu Microsoft Windows HTTP-Diensten (WinHTTP)

WinHTTP-Versionen

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest