Функция WinHttpSetTimeouts (winhttp.h)

Функция WinHttpSetTimeouts задает время ожидания, связанное с транзакциями HTTP.

Синтаксис

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

Параметры

[in] hInternet

Дескриптор HINTERNET , возвращаемый winHttpOpen или WinHttpOpenRequest.

[in] nResolveTimeout

Значение типа integer, указывающее время ожидания в миллисекундах, используемое для разрешения имен. Если разрешение занимает больше времени ожидания, запрос отменяется. Начальное значение равно нулю, что означает отсутствие времени ожидания (бесконечное).

Windows Vista и Windows XP: Если время ожидания DNS указано с помощью NAME_RESOLUTION_TIMEOUT, на каждый запрос приходится один поток.

[in] nConnectTimeout

Значение типа integer, указывающее время ожидания в миллисекундах, используемое для запросов на подключение к серверу. Если запрос на подключение занимает больше времени ожидания, запрос отменяется. Начальное значение — 60 000 (60 секунд).

Tcp/IP может истечет при настройке сокета во время трехэтапного обмена SYN/ACK независимо от значения этого параметра.

[in] nSendTimeout

Значение типа integer, указывающее время ожидания в миллисекундах, используемое для отправки запросов. Если отправка запроса занимает больше времени, чем это время ожидания, отправка отменяется. Начальное значение — 30 000 (30 секунд).

[in] nReceiveTimeout

Значение типа integer, указывающее время ожидания в миллисекундах для получения ответа на запрос. Если ответ занимает больше времени ожидания, запрос отменяется. Начальное значение — 30 000 (30 секунд).

Возвращаемое значение

Возвращает значение TRUE в случае успешного выполнения или FALSE в противном случае. Для получения дополнительных сведений об ошибке вызовите Метод GetLastError. Среди возвращаемых кодов ошибок:

Код ошибки Описание
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Не удается выполнить запрошенную операцию, так как предоставленный дескриптор находится в неправильном состоянии.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Для этой операции указан неправильный тип дескриптора.
ERROR_WINHTTP_INTERNAL_ERROR
Произошла внутренняя ошибка.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для выполнения запрошенной операции. (Код ошибки Windows)
ERROR_INVALID_PARAMETER
Один или несколько параметров времени ожидания имеют отрицательное значение, отличное от -1.

Комментарии

Даже если WinHTTP используется в асинхронном режиме (то есть, если WINHTTP_FLAG_ASYNC задано в WinHttpOpen), эта функция работает синхронно. Возвращаемое значение указывает на успех или сбой. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Значение 0 или -1 задает время ожидания бесконечного ожидания. Значение больше 0 задает значение времени ожидания в миллисекундах. Например, 30 000 установят время ожидания в 30 секунд. Все отрицательные значения, отличные от -1, приводят к сбою функции с ERROR_INVALID_PARAMETER.

Важно Если с помощью WinHttpSetOption и WINHTTP_OPTION_RECEIVE_TIMEOUT установлено небольшое время ожидания, оно может переопределить значение, заданное параметром dwReceiveTimeout , в результате чего ответ завершится раньше, чем ожидалось. Чтобы избежать этого, не устанавливайте время ожидания с параметром WINHTTP_OPTION_RECEIVE_TIMEOUT , которое меньше значения, заданного с помощью dwReceiveTimeout.
 
Примечание Для Windows XP и Windows 2000 см. раздел Требования к времени выполнения начальной страницы WinHTTP.
 

Примеры

В этом примере показано, как задать новые значения времени ожидания с помощью 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());
    }

Требования

Требование Значение
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная с пакетом обновления 3 (SP3) [только классические приложения]
Минимальная версия сервера Windows Server 2003, Windows 2000 Server с пакетом обновления 3 (SP3) [только классические приложения]
Целевая платформа Windows
Header winhttp.h
Библиотека Winhttp.lib
DLL Winhttp.dll
Распространяемые компоненты WinHTTP 5.0 и Internet Обозреватель 5.01 или более поздней версии в Windows XP и Windows 2000.

См. также раздел

Сведения о службах MICROSOFT Windows HTTP (WinHTTP)

Версии WinHTTP

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest