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 |
---|---|
|
Der angeforderte Vorgang kann nicht ausgeführt werden, da sich der angegebene Handle nicht im richtigen Zustand befindet. |
|
Der Typ des angegebenen Handles ist für diesen Vorgang falsch. |
|
Ein interner Fehler ist aufgetreten. |
|
Für den angeforderten Vorgang war nicht genügend Arbeitsspeicher verfügbar. (Windows-Fehlercode) |
|
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.
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. |