Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configurare il client Apache-based HTTP
Nota
ApacheHttpClientè obsoleto perché Apache HttpClient 4.x è in modalità manutenzione. Usa la versione basata su Apache 5.x. HttpClient Apache5HttpClient
L'SDK ApacheHttpClient è basato su Apache 4.x. HttpClient
L'SDK offre anche il formato UrlConnectionHttpClientUrlConnectionHttpClient, vedere. Configurare il client HTTP URLConnection basato
Per visualizzare il set completo di opzioni di configurazione disponibili perApacheHttpClient, vedere ApacheHttpClient.Builder
Accedere a ApacheHttpClient
Configurazione necessaria
Per utilizzare ilApacheHttpClient, è necessario aggiungere una dipendenza dalla apache-client libreria in fase di compilazione.
Fai riferimento al seguente esempio di pom.xml file Maven per configurare. ApacheHttpClient
<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>
Usa e configura il ApacheHttpClient
È possibile configurare un'istanza ApacheHttpClient insieme alla creazione di un client di servizio oppure è possibile configurare una singola istanza da condividere tra più client di servizio.
Con entrambi gli approcci, si utilizza il ApacheHttpClient.Builder per configurare le proprietà del client Apache-based HTTP.
Procedura consigliata: dedicare un'ApacheHttpClientistanza a un client di servizio
Se devi configurare un'istanza diApacheHttpClient, ti consigliamo di creare l'ApacheHttpClientistanza dedicata. Puoi farlo utilizzando il httpClientBuilder metodo del generatore del cliente del servizio. In questo modo, il ciclo di vita del client HTTP è gestito dall'SDK, il che aiuta a evitare potenziali perdite di memoria se l'ApacheHttpClientistanza non viene chiusa quando non è più necessaria.
L'esempio seguente crea S3Client e configura l'istanza incorporata di with and values. ApacheHttpClient maxConnections connectionTimeout L'istanza HTTP viene creata utilizzando il httpClientBuilder metodo diS3Client.Builder.
Importazioni
import software.amazon.awssdk.http.apache.ApacheHttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;
Codice
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.
Approccio alternativo: condividere un'ApacheHttpClientistanza
Per ridurre l'utilizzo di risorse e memoria per l'applicazione, puoi configurarlo ApacheHttpClient e condividerlo tra più client di servizio. Il pool di connessioni HTTP verrà condiviso, il che riduce l'utilizzo delle risorse.
Nota
Quando un'ApacheHttpClientistanza è condivisa, è necessario chiuderla quando è pronta per essere eliminata. L'SDK non chiuderà l'istanza quando il client di servizio viene chiuso.
L'esempio seguente configura un client Apache-based HTTP utilizzato da due client di servizio. L'ApacheHttpClientistanza configurata viene passata al httpClient metodo di ciascun builder. Quando i client di servizio e il client HTTP non sono più necessari, il codice li chiude esplicitamente. Il codice chiude il client HTTP per ultimo.
Importazioni
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;
Codice
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.
Esempio di configurazione del proxy
Il seguente frammento di codice utilizza il generatore di configurazione proxy per il 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();
Le proprietà di sistema Java equivalenti per la configurazione del proxy sono mostrate nel seguente frammento della riga di comando.
$ java -Dhttp.proxyHost=example.com -Dhttp.proxyPort=1234 -Dhttp.proxyUser=username \ -Dhttp.proxyPassword=password -Dhttp.nonProxyHosts=localhost|host.example.com -cp ... App
La configurazione equivalente che utilizza le variabili di ambiente è:
// 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
Nota
Il client HTTP Apache attualmente non supporta le proprietà del sistema proxy HTTPS o la variabile di ambiente HTTPS_PROXY.