Saltar al contenido

Conexión y tiempo de espera de solicitud de conexión

Solución:

HttpClient tiene una forma de establecer la conexión y el tiempo de espera del socket (setConnectionTimeout() y setTimeout()) de acuerdo con los javadocs de HttpClient.

Connection timeout es el tiempo de espera hasta que se establezca una conexión con el servidor.

Socket timeout es el tiempo de espera para recibir datos (tiempo de espera de socket).

Ejemplo:

Digamos que apunta su navegador para acceder a una página web. Si el servidor no responde en X segundos, se producirá un tiempo de espera de conexión. Pero si establece la conexión, el servidor comenzará a procesar el resultado para el navegador. Si no finaliza este procesamiento en Y segundos, se producirá un tiempo de espera de socket.

De la documentación:

/**
 * Returns the timeout in milliseconds used when requesting a connection
 * from the connection manager. A timeout value of zero is interpreted
 * as an infinite timeout.
 * <p>
 * A timeout value of zero is interpreted as an infinite timeout.
 * A negative value is interpreted as undefined (system default).
 * </p>
 * <p>
 * Default: {@code -1}
 * </p>
 */
public int getConnectionRequestTimeout() {
    return connectionRequestTimeout;
}

/**
 * Determines the timeout in milliseconds until a connection is established.
 * A timeout value of zero is interpreted as an infinite timeout.
 * <p>
 * A timeout value of zero is interpreted as an infinite timeout.
 * A negative value is interpreted as undefined (system default).
 * </p>
 * <p>
 * Default: {@code -1}
 * </p>
 */
public int getConnectTimeout() {
    return connectTimeout;
}

Así es como debería verse el código:

HttpClientBuilder clientBuilder = HttpClientBuilder.create();
RequestConfig.Builder requestBuilder = RequestConfig.custom();
// Connection Timeout to establish a connection
requestBuilder = requestBuilder.setConnectTimeout(connectTimeoutMillis);
// Timeout to get a connection from the connection manager for the Http Client
requestBuilder = requestBuilder.setConnectionRequestTimeout(requestTimeoutMillis);
// Timeout between two data packets from the server
requestBuilder = requestBuilder.setSocketTimeout(requestTimeoutMillis);
clientBuilder.setDefaultRequestConfig(requestBuilder.build());
CloseableHttpClient httpClient = clientBuilder.build();
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *