

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configuration du client HTTP
<a name="http-client-config"></a>

Par défaut, AWS SDK pour Kotlin utilise un client HTTP basé sur [OkHttp](https://square.github.io/okhttp). Vous pouvez remplacer le client HTTP et sa configuration en fournissant un client configuré de manière explicite.

**Avertissement**  
Quel que soit le moteur HTTP que vous utilisez, les autres dépendances de votre projet peuvent avoir des dépendances transitives qui entrent en conflit avec la version du moteur spécifique requise par le SDK. En particulier, les frameworks tels que Spring Boot sont connus pour gérer les dépendances OkHttp et s'appuyer sur des versions plus anciennes que le SDK. Veuillez consulter [Comment résoudre les conflits de dépendance ?](ts-faq-dep-conflict-resolution.md) pour plus d'informations.

**Note**  
Par défaut, chaque client de service utilise sa propre copie d'un client HTTP. Si vous utilisez plusieurs services dans votre application, vous souhaiterez peut-être créer un seul client HTTP et le partager entre tous les clients de service.

## Configuration de base
<a name="basic-http-confg"></a>

Lorsque vous configurez un client de service, vous pouvez configurer le type de moteur par défaut. Le SDK gère le moteur client HTTP qui en résulte et le ferme automatiquement lorsqu'il n'est plus nécessaire.

L'exemple suivant montre la configuration d'un client HTTP lors de l'initialisation d'un client DynamoDB.

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

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

### Code
<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.
}
```

## Configuration avancée
<a name="advanced-http-config"></a>

La configuration HTTP par défaut convient à la plupart des cas d'utilisation. Pour certains cas d'utilisation avancés, tels que les environnements à haut débit, les options de configuration avancées suivantes fournissent des fonctionnalités et des capacités supplémentaires : 

### Spécifier un type de moteur HTTP
<a name="http-config-engine"></a>

Pour spécifier un type de moteur HTTP autre que celui par défaut, ou pour personnaliser la configuration spécifique à un type de moteur HTTP particulier, vous pouvez transmettre un paramètre supplémentaire `httpClient` qui indique le type de moteur. 

L'exemple suivant indique [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)ce que vous pouvez utiliser pour configurer 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)propriété.

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

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

#### Code
<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.
}
```

Les valeurs possibles pour le type de moteur sont `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), et [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). 

Pour utiliser des paramètres de configuration spécifiques à un moteur HTTP, vous devez ajouter le moteur en tant que dépendance au moment de la compilation. Pour le`OkHttpEngine`, vous ajoutez la dépendance suivante à l'aide de Gradle.

(Vous pouvez accéder au {{X.Y.Z}} lien pour voir la dernière version 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")
```

Pour le`CrtHttpEngine`, ajoutez la dépendance suivante.

```
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")
```

#### Utilisation de la `OkHttp4Engine`
<a name="http-config-okhttp4engine"></a>

Utilisez le `OkHttp4Engine` si vous ne pouvez pas utiliser la valeur par défaut`OkHttpEngine`. Le [ GitHub référentiel smithy-kotlin](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) contient des informations sur la façon dont vous configurez et utilisez le. `OkHttp4Engine`

#### Utiliser un client HTTP explicite
<a name="http-client-explicit-usage"></a>

Lorsque vous utilisez un client HTTP explicite, vous êtes responsable de sa durée de vie, y compris de sa fermeture lorsque vous n'en avez plus besoin. Un client HTTP doit vivre au moins aussi longtemps que n'importe quel client de service qui l'utilise.

L'exemple de code suivant montre le code qui permet au client HTTP de rester actif lorsqu'`DynamoDbClient`il est actif. 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)fonction s'assure que le client HTTP se ferme correctement.

##### Importations
<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
```

##### Code
<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.
        }
    }
}
```

### Surveillance des connexions inactives
<a name="http-idle-connection-monitoring"></a>

**Important**  
 La fonction d'interrogation en cas d'inactivité de connexion du OkHttp moteur ([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)) a été remplacée par de nouvelles tentatives automatiques en cas d'échec de connexion (). [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) **L'interrogation des connexions en cas d'inactivité sera **déconseillée** dans la version **1.7 du SDK et sera **supprimée** dans la version v1.8** du SDK.** Consultez [le billet de GitHub discussion associé](https://github.com/aws/aws-sdk-kotlin/discussions/1797) pour plus de détails. 

[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/)fournit l'option [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 configuration pour surveiller les connexions inactives en vue de leur fermeture à distance. Cette fonctionnalité détecte les connexions fermées par les services qui se trouvent toujours dans le pool de connexions, évitant ainsi les erreurs lors des demandes suivantes. 

Lorsqu'il `connectionIdlePollingInterval` est défini sur une valeur non nulle, le moteur interroge les connexions qui sont renvoyées au pool de connexions. Le processus d'interrogation bloque les lectures avec le délai d'expiration du socket défini sur l'intervalle spécifié. L'interrogation est automatiquement annulée lorsque le moteur acquiert la connexion depuis le pool ou lorsque la connexion est expulsée et fermée. 

Lorsque cette valeur est `null` (valeur par défaut), le sondage est désactivé. Les connexions inactives du pool qui sont fermées à distance peuvent rencontrer des erreurs lorsqu'elles sont acquises pour des appels ultérieurs.

**Note**  
 Comme la boucle d'interrogation utilise des lectures bloquantes, les appels au moteur pour établir ou fermer une connexion peuvent être retardés d'un intervalle égal à l'`connectionIdlePollingInterval`intervalle. Le choix d'une valeur faible pour l'intervalle signifie que le SDK établira des connexions plus rapidement, au détriment d'une utilisation plus importante des ressources inactives. 

#### Importations
<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
```

#### Code
<a name="http-idle-connection-ex-code"></a>

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