

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 basé sur Apache 5.x
<a name="http-configuration-apache5"></a>

## Accédez à Apache5 HttpClient
<a name="http-apache-5-dependency"></a>

Pour utiliser le, `Apache5HttpClient` vous devez ajouter une dépendance **apache5-client** et une configuration explicite `Apache5HttpClient` sur vos clients de service.

```
<dependencyManagement>
   <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.41.0*</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
    </dependency>
    
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>apache5-client</artifactId>
    </dependency>
</dependencies>
```

\$1Remplacez la version affichée en rouge par la version du SDK Java que vous souhaitez utiliser. Découvrez les dernières actualités sur [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

### Utilisez et configurez le `Apache5HttpClient`
<a name="http-config-apache-5-config"></a>

Vous pouvez configurer une instance `Apache5HttpClient` tout en créant un client de service, ou vous pouvez configurer une instance unique à partager entre plusieurs clients de service. 

Quelle que soit l'approche, vous utilisez [Apache5 HttpClient .Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.Builder.html) pour configurer les propriétés du client HTTP basé sur Apache 5.

#### Meilleure pratique : dédier une HttpClient instance Apache5 à un client de service
<a name="http-apache5-dedicated-instance"></a>

Si vous devez configurer une instance de`Apache5HttpClient`, nous vous recommandons de créer l'`Apache5HttpClient`instance dédiée. Vous pouvez le faire en utilisant la httpClientBuilder méthode du générateur du client de service. Ainsi, le cycle de vie du client HTTP est géré par le SDK, ce qui permet d'éviter d'éventuelles fuites de mémoire si l'`Apache5HttpClient`instance n'est pas fermée alors qu'elle n'est plus nécessaire.

L'exemple suivant crée un S3Client et configure l'instance intégrée de `Apache5HttpClient` avec les valeurs MaxConnections et ConnectionTimeout. L'instance HTTP est créée à l'aide de la `httpClientBuilder` méthode de`S3Client.Builder`.

**Importations**

```
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.s3.S3Client;
import java.time.Duration;
```

**Code**

```
S3Client s3Client = S3Client   // Singleton: Use the s3Client for all requests.
    .builder()
    .httpClientBuilder(Apache5HttpClient.builder()
        .maxConnections(100)
        .connectionTimeout(Duration.ofSeconds(5))
    )
    .build();

// Perform work with the s3Client.

s3Client.close();   // Requests completed: Close all service clients.
```

#### Approche alternative : partager une `Apache5HttpClient` instance
<a name="http-apache5-shared-instance"></a>

Pour réduire l'utilisation des ressources et de la mémoire de votre application, vous pouvez configurer un `Apache5HttpClient` et le partager entre plusieurs clients de service. Le pool de connexions HTTP sera partagé, ce qui réduit l'utilisation des ressources.

**Note**  
Lorsqu'une `Apache5HttpClient` instance est partagée, vous devez la fermer lorsqu'elle est prête à être supprimée. Le SDK ne ferme pas l'instance lorsque le client de service est fermé.

L'exemple suivant configure un client HTTP basé sur Apache qui est utilisé par deux clients de service. L'`ApacheHttpClient`instance configurée est transmise à la méthode HttpClient de chaque générateur. Lorsque les clients du service et le client HTTP ne sont plus nécessaires, le code les ferme explicitement. Le code ferme le client HTTP en dernier.

**Importations**

```
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.s3.S3Client;
```

**Code**

```
SdkHttpClient apache5HttpClient = Apache5HttpClient.builder()
        .maxConnections(100).build();

// Singletons: Use the s3Client and dynamoDbClient for all requests.
S3Client s3Client = 
    S3Client.builder()
            .httpClient(apache5HttpClient).build();

DynamoDbClient dynamoDbClient = 
    DynamoDbClient.builder()
                  .httpClient(apache5HttpClient).build();

// Perform work with the s3Client and dynamoDbClient.

// Requests completed: Close all service clients.
s3Client.close();
dynamoDbClient.close();
apache5HttpClient.close();  // Explicitly close apache5HttpClient.
```