Compartir a través de


Función WinHttpSetTimeouts (winhttp.h)

La función WinHttpSetTimeouts establece tiempos de espera implicados en transacciones HTTP.

Sintaxis

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

Parámetros

[in] hInternet

Identificador HINTERNET devuelto por WinHttpOpen o WinHttpOpenRequest.

[in] nResolveTimeout

Valor de tipo entero que especifica el valor de tiempo de espera, en milisegundos, que se va a usar para la resolución de nombres. Si la resolución tarda más de este valor de tiempo de espera, se cancela la solicitud. El valor inicial es cero, lo que significa que no se agota el tiempo de espera (infinito).

Windows Vista y Windows XP: Si se especifica el tiempo de espera de DNS mediante NAME_RESOLUTION_TIMEOUT, hay una sobrecarga de un subproceso por solicitud.

[in] nConnectTimeout

Valor de tipo entero que especifica el valor de tiempo de espera, en milisegundos, que se va a usar para las solicitudes de conexión del servidor. Si una solicitud de conexión tarda más de este valor de tiempo de espera, se cancela la solicitud. El valor inicial es 60 000 (60 segundos).

TCP/IP puede agotar el tiempo de espera al configurar el socket durante el intercambio SYN/ACK de tres piernas, independientemente del valor de este parámetro.

[in] nSendTimeout

Valor de tipo entero que especifica el valor de tiempo de espera, en milisegundos, que se va a usar para enviar solicitudes. Si el envío de una solicitud tarda más de este valor de tiempo de espera, se cancela el envío. El valor inicial es 30 000 (30 segundos).

[in] nReceiveTimeout

Valor de tipo entero que especifica el valor de tiempo de espera, en milisegundos, para recibir una respuesta a una solicitud. Si una respuesta tarda más de este valor de tiempo de espera, se cancela la solicitud. El valor inicial es 30 000 (30 segundos).

Valor devuelto

Devuelve TRUE si se ejecuta correctamente o FALSE de lo contrario. Para obtener información de error extendida, llame a GetLastError. Entre los códigos de error devueltos se incluyen los siguientes.

Código de error Descripción
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
No se puede llevar a cabo la operación solicitada porque el identificador proporcionado no está en el estado correcto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
El tipo de identificador proporcionado es incorrecto para esta operación.
ERROR_WINHTTP_INTERNAL_ERROR
Se ha producido un error interno.
ERROR_NOT_ENOUGH_MEMORY
No había suficiente memoria disponible para completar la operación solicitada. (Código de error de Windows)
ERROR_INVALID_PARAMETER
Uno o varios de los parámetros de tiempo de espera tienen un valor negativo distinto de -1.

Comentarios

Incluso cuando WinHTTP se usa en modo asincrónico (es decir, cuando WINHTTP_FLAG_ASYNC se ha establecido en WinHttpOpen), esta función funciona de forma sincrónica. El valor devuelto indica éxito o error. Para obtener información de error extendida, llame a GetLastError.

Un valor de 0 o -1 establece un tiempo de espera para esperar infinitamente. Un valor mayor que 0 establece el valor de tiempo de espera en milisegundos. Por ejemplo, 30 000 establecería el tiempo de espera en 30 segundos. Todos los valores negativos distintos de -1 hacen que se produzca un error en la función con ERROR_INVALID_PARAMETER.

Importante Si se establece un tiempo de espera pequeño con WinHttpSetOption y WINHTTP_OPTION_RECEIVE_TIMEOUT, puede invalidar el valor establecido con el parámetro dwReceiveTimeout , lo que hace que una respuesta finalice antes de lo esperado. Para evitar esto, no establezca un tiempo de espera con la opción WINHTTP_OPTION_RECEIVE_TIMEOUT que sea menor que el valor establecido mediante dwReceiveTimeout.
 
Nota Para Windows XP y Windows 2000, consulta la sección Requisitos en tiempo de ejecución de la página de inicio de WinHTTP.
 

Ejemplos

En este ejemplo se muestra cómo establecer nuevos valores de tiempo de espera mediante 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());
    }

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP, Windows 2000 Professional con SP3 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003, Windows 2000 Server con SP3 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winhttp.h
Library Winhttp.lib
Archivo DLL Winhttp.dll
Redistribuible WinHTTP 5.0 e Internet Explorer 5.01 o posterior en Windows XP y Windows 2000.

Consulte también

Acerca de los servicios HTTP de Microsoft Windows (WinHTTP)

Versiones winHTTP

WinHttpCloseHandle

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest