View a markdown version of this page

Configuration du client Apache-based HTTP - AWS SDK for Java 2.x

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 Apache-based HTTP

Note

ApacheHttpClientest obsolète car Apache HttpClient 4.x est en mode maintenance. Utilisez la version basée sur Apache5HttpClient Apache HttpClient 5.x.

Le SDK ApacheHttpClient est basé sur Apache HttpClient 4.x.

Le SDK propose également le UrlConnectionHttpClient, qui se charge plus rapidement, mais possède moins de fonctionnalités. Pour plus d'informations sur la configuration duUrlConnectionHttpClient, consultezConfiguration du client HTTP URLConnection basé.

Pour voir l'ensemble complet des options de configuration disponibles pour leApacheHttpClient, reportez-vous aux sections ApacheHttpClient.Builder et ProxyConfiguration.Builder.

Accédez au ApacheHttpClient

Configuration requise

Pour utiliser leApacheHttpClient, vous devez ajouter une dépendance à la apache-client bibliothèque au moment de la compilation.

Reportez-vous à l'exemple suivant de pom.xml fichier Maven pour configurer leApacheHttpClient.

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- By adding the apache-client dependency, ApacheHttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache-client</artifactId> </dependency> </dependencies>

Utilisez et configurez ApacheHttpClient

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

Quelle que soit l'approche, vous utilisez le ApacheHttpClient.Builder pour configurer les propriétés du client Apache-based HTTP.

Bonne pratique : dédier une ApacheHttpClient instance à un client de service

Si vous devez configurer une instance deApacheHttpClient, nous vous recommandons de créer l'ApacheHttpClientinstance dédiée. Vous pouvez le faire en utilisant la httpClientBuilder méthode du générateur du client du 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'ApacheHttpClientinstance n'est pas fermée alors qu'elle n'est plus nécessaire.

L'exemple suivant crée S3Client et configure l'instance intégrée de ApacheHttpClient with maxConnections and connectionTimeout values. L'instance HTTP est créée à l'aide de la httpClientBuilder méthode deS3Client.Builder.

Importations

import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

Code

S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ).build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.

Autre approche : partager une ApacheHttpClient instance

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

Note

Lorsqu'une ApacheHttpClient 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 Apache-based HTTP utilisé par deux clients de service. L'ApacheHttpClientinstance configurée est transmise à la httpClient méthode de chaque générateur. Lorsque les clients de 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.apache.ApacheHttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;

Code

SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apacheHttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apacheHttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apacheHttpClient.close(); // Explicitly close apacheHttpClient.

Exemple de configuration du proxy

L'extrait de code suivant utilise le générateur de configuration de proxy pour le client HTTP Apache.

SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://example.com:1234")) .username("username") .password("password") .addNonProxyHost("localhost") .addNonProxyHost("host.example.com") .build()) .build();

Les propriétés système Java équivalentes pour la configuration du proxy sont affichées dans l'extrait de ligne de commande suivant.

$ java -Dhttp.proxyHost=example.com -Dhttp.proxyPort=1234 -Dhttp.proxyUser=username \ -Dhttp.proxyPassword=password -Dhttp.nonProxyHosts=localhost|host.example.com -cp ... App

La configuration équivalente qui utilise des variables d'environnement est la suivante :

// Set the following environment variables. // $ export HTTP_PROXY="http://username:password@example.com:1234" // $ export NO_PROXY="localhost|host.example.com" // Set the 'useSystemPropertyValues' to false on the proxy configuration. SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build(); // Run the application. // $ java -cp ... App
Note

Le client HTTP Apache ne prend actuellement pas en charge les propriétés du système proxy HTTPS ni la variable d'environnement HTTPS_PROXY.