

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configuración del cliente HTTP
<a name="http-client-config"></a>

De forma predeterminada, AWS SDK para Kotlin utiliza un cliente HTTP basado en [OkHttp](https://square.github.io/okhttp). Puede anular el cliente HTTP y su configuración proporcionando un cliente configurado de forma explícita.

**aviso**  
Independientemente del motor HTTP que utilices, es posible que otras dependencias de tu proyecto tengan dependencias transitivas que entren en conflicto con la versión específica del motor que requiere el SDK. En concreto, se sabe que los marcos como Spring Boot administran las dependencias OkHttp y se basan en versiones anteriores al SDK. Consulte [¿Cómo resuelvo los conflictos de dependencia?](ts-faq-dep-conflict-resolution.md) para obtener más información.

**nota**  
De forma predeterminada, cada cliente de servicio usa su propia copia de un cliente HTTP. Si utiliza varios servicios en la aplicación, puede que desee crear un único cliente HTTP y compartirlo entre todos los clientes del servicio.

## Configuración básica
<a name="basic-http-confg"></a>

Al configurar un cliente de servicio, puede configurar el tipo de motor predeterminado. El SDK administra el motor de cliente HTTP resultante y lo cierra automáticamente cuando ya no es necesario.

El siguiente ejemplo muestra la configuración de un cliente HTTP durante la inicialización de un cliente de DynamoDB.

### Importaciones
<a name="basic-config-ex-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import kotlin.time.Duration.Companion.seconds
```

### Código
<a name="basic-config-ex-code"></a>

```
DynamoDbClient {
    region = "us-east-2"
    httpClient {
        maxConcurrency = 64u
        connectTimeout = 10.seconds
    }
}.use { ddb ->

    // Perform some actions with Amazon DynamoDB.
}
```

## Configuración avanzada
<a name="advanced-http-config"></a>

La configuración HTTP predeterminada es adecuada para la mayoría de los casos de uso. Para algunos casos de uso avanzados, como los entornos de alto rendimiento, las siguientes opciones de configuración avanzada ofrecen funciones y capacidades adicionales: 

### Especifique un tipo de motor HTTP
<a name="http-config-engine"></a>

Para especificar un tipo de motor HTTP no predeterminado o para personalizar la configuración específica de un tipo de motor HTTP concreto, puede pasar un parámetro adicional `httpClient` que especifique el tipo de motor. 

En el siguiente ejemplo, se especifica lo [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/index.html)que se puede usar para configurar la [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/index.html)propiedad.

#### Importaciones
<a name="http-config-specify-engine-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
```

#### Código
<a name="http-config-specify-engine-code"></a>

```
DynamoDbClient {
    region = "us-east-2"
    httpClient(OkHttpEngine) {  // The first parameter specifies the HTTP engine type.
        // The following parameter is generic HTTP configuration available in any engine type.
        maxConcurrency = 64u

            // The following parameter is OkHttp-specific configuration.
        maxConcurrencyPerHost = 32u
    }
}.use { ddb ->

    // Perform some actions with Amazon DynamoDB.
}
```

Los valores posibles para el tipo de motor son `OkHttpEngine` [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp4/aws.smithy.kotlin.runtime.http.engine.okhttp4/-ok-http4-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp4/aws.smithy.kotlin.runtime.http.engine.okhttp4/-ok-http4-engine/index.html), y [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-crt/aws.smithy.kotlin.runtime.http.engine.crt/-crt-http-engine/index.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-crt/aws.smithy.kotlin.runtime.http.engine.crt/-crt-http-engine/index.html). 

Para usar los parámetros de configuración específicos de un motor HTTP, debe agregar el motor como una dependencia en tiempo de compilación. Para ello`OkHttpEngine`, agrega la siguiente dependencia mediante Gradle.

(Puedes navegar hasta el *X.Y.Z* enlace para ver la última versión disponible).

```
implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
implementation("aws.smithy.kotlin:http-client-engine-okhttp")
```

Para el`CrtHttpEngine`, añada la siguiente dependencia.

```
implementation(platform("aws.smithy.kotlin:bom:[https://github.com/smithy-lang/smithy-kotlin/releases/latest](https://github.com/smithy-lang/smithy-kotlin/releases/latest)"))
implementation("aws.smithy.kotlin:http-client-engine-crt")
```

#### Utilizar `OkHttp4Engine`
<a name="http-config-okhttp4engine"></a>

Use la opción predeterminada `OkHttp4Engine` si no puede usar la opción predeterminada`OkHttpEngine`. El [ GitHub repositorio smithy-kotlin](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) tiene información sobre cómo configurar y usar el. `OkHttp4Engine`

#### Utilice un cliente HTTP explícito
<a name="http-client-explicit-usage"></a>

Cuando utilizas un cliente HTTP explícito, eres responsable de su vida útil, incluido el cierre cuando ya no lo necesites. Un cliente HTTP debe tener una vida útil como mínimo igual a la de cualquier cliente de servicio que lo utilice.

El siguiente ejemplo de código muestra el código que mantiene activo al cliente HTTP mientras `DynamoDbClient` está activo. La [https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/runtime-core/aws.smithy.kotlin.runtime.io/use.html)función se asegura de que el cliente HTTP se cierre correctamente.

##### Importaciones
<a name="http-client-explicit-usage-ex-imports"></a>

```
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
import kotlin.time.Duration.Companion.seconds
```

##### Código
<a name="http-client-explicit-usage-ex-code"></a>

```
OkHttpEngine {
    maxConcurrency = 64u
    connectTimeout = 10.seconds
}.use { okHttpClient ->

     DynamoDbClient {
        region = "us-east-2"
        httpClient = okHttpClient
    }.use { ddb ->
        {
            // Perform some actions with Amazon DynamoDB.
        }
    }
}
```

### Supervisión de conexiones inactivas
<a name="http-idle-connection-monitoring"></a>

**importante**  
 La función de sondeo en vacío de la conexión del OkHttp motor ([https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html)) ha sido sustituida por reintentos automáticos de conexión fallidos (). [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/retry-on-connection-failure.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/retry-on-connection-failure.html) **El sondeo de conexiones inactivas quedará **obsoleto** en la versión **1.7** del SDK y se **eliminará** en la versión 1.8 del SDK.** Consulte [la publicación de GitHub debate relacionada](https://github.com/aws/aws-sdk-kotlin/discussions/1797) para obtener más información. 

[https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine/)proporciona la opción [https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html](https://docs.aws.amazon.com/smithy-kotlin/api/latest/http-client-engine-okhttp/aws.smithy.kotlin.runtime.http.engine.okhttp/-ok-http-engine-config/connection-idle-polling-interval.html)de configuración para monitorear las conexiones inactivas para su cierre remoto. Esta función detecta cuando los servicios tienen conexiones cerradas que aún se encuentran en el grupo de conexiones, lo que evita errores en las solicitudes posteriores. 

Cuando `connectionIdlePollingInterval` se establece en un valor no nulo, el motor sondea las conexiones que se devuelven al conjunto de conexiones. El proceso de sondeo bloquea las lecturas con el tiempo de espera del socket establecido en el intervalo especificado. El sondeo se cancela automáticamente cuando el motor adquiere la conexión del grupo o cuando la conexión se desaloja y se cierra. 

Si este valor es `null` (el predeterminado), el sondeo se desactiva. Las conexiones inactivas del grupo que se cierran de forma remota pueden producir errores cuando se adquieren para llamadas posteriores.

**nota**  
 Como el ciclo de sondeo utiliza lecturas bloqueantes, las llamadas del motor para adquirir o cerrar una conexión pueden demorarse tanto como el `connectionIdlePollingInterval` intervalo. Si se elige un valor bajo para el intervalo, el SDK adquirirá las conexiones más rápido, a costa de un mayor uso de los recursos inactivos. 

#### Importaciones
<a name="http-idle-connection-ex-imports"></a>

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.smithy.kotlin.runtime.http.engine.okhttp.OkHttpEngine
import kotlin.time.Duration.Companion.milliseconds
```

#### Código
<a name="http-idle-connection-ex-code"></a>

```
S3Client.fromEnvironment {
    httpEngine(OkHttpEngine) {
        connectionIdlePollingInterval = 50.milliseconds
    }
}.use { s3 -> 
  // Use the Amazon S3 client
}
```