

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 i client HTTP in AWS SDK for Java 2.x
<a name="http-configuration"></a>

È possibile modificare il client HTTP da utilizzare per il client di servizio e modificare la configurazione predefinita per i client HTTP con AWS SDK for Java 2.x. Questa sezione illustra i client e le impostazioni HTTP per l'SDK.

## Client HTTP disponibili nell'SDK for Java
<a name="http-clients-available"></a>

### Client sincroni
<a name="http-config-sync"></a>

I client HTTP sincroni nell'SDK for Java implementano [SdkHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/SdkHttpClient.html)l'interfaccia. Un client di servizio sincrono, come il `S3Client` o il`DynamoDbClient`, richiede l'uso di un client HTTP sincrono. AWS SDK per Java Offre tre client HTTP sincroni.

**ApacheHttpClient (impostazione predefinita)**  
[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)è il client HTTP predefinito per i client di servizi sincroni. Per informazioni sulla configurazione di`ApacheHttpClient`, vedere. [Configurare il client HTTP basato su Apache](http-configuration-apache.md) 

**AwsCrtHttpClient**  
[AwsCrtHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtHttpClient.html)fornisce un throughput elevato e un IO non bloccante. È basato sul client Http AWS Common Runtime (CRT). Per informazioni sulla configurazione `AwsCrtHttpClient` e sul suo utilizzo con i client di servizio, vedere. [Configurazione AWS dei client HTTP basati su CRT](http-configuration-crt.md)

**UrlConnectionHttpClient**  
Per ridurre al minimo il numero di jar e librerie di terze parti utilizzate dall'applicazione, è possibile utilizzare. [UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html) Per informazioni sulla configurazione di`UrlConnectionHttpClient`, vedere. [Configurare il client HTTP URLConnection basato](http-configuration-url.md)

**Apache 5 HttpClient**  
[Apache5 HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html) *è una versione aggiornata basata su `ApacheHttpClient` Apache 5.x. HttpClient La versione 5.x* è la versione gestita attivamente da Apache e migliora la versione precedente utilizzata `ApacheHttpClient` offrendo la compatibilità con l'ecosistema Java moderno, incluso il supporto dei thread virtuali per Java 21 e una maggiore flessibilità di registrazione tramite SLF4 J. che `Apache5HttpClient` sostituirà `ApacheHttpClient` come client sincrono predefinito in una versione futura dell'SDK for AWS Java 2.x. Ha un'API e caratteristiche identiche, che la rendono ideale come sostituto immediato. Per informazioni sulla configurazione di, vedere. `Apache5HttpClient` [Configurazione del client HTTP basato su Apache 5.x](http-configuration-apache5.md)

### Client asincroni
<a name="http-config-async"></a>

I client HTTP asincroni nell'SDK for Java implementano l'interfaccia. [SdkAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/async/SdkAsyncHttpClient.html) Un client di servizio asincrono, come il `S3AsyncClient` o il, richiede l'uso di un client HTTP `DynamoDbAsyncClient` asincrono. Offre AWS SDK per Java due client HTTP asincroni.

**NettyNioAsyncHttpClient (impostazione predefinita)**  
[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)è il client HTTP predefinito utilizzato dai client asincroni. Per informazioni sulla configurazione di, vedere. `NettyNioAsyncHttpClient` [Configurazione del client HTTP basato su Netty](http-configuration-netty.md)

**AwsCrtAsyncHttpClient**  
[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)Si basa sul client HTTP AWS Common Runtime (CRT). Per informazioni sulla configurazione di`AwsCrtAsyncHttpClient`, vedere. [Configurazione AWS dei client HTTP basati su CRT](http-configuration-crt.md) 

## Raccomandazioni sui client HTTP
<a name="http-clients-recommend"></a>

Quando si sceglie un'implementazione del client HTTP entrano in gioco diversi fattori. Utilizza le seguenti informazioni per aiutarti a decidere.

### Confronto tra client HTTP
<a name="http-clients-recommend-compare"></a>

La tabella seguente fornisce informazioni dettagliate per ogni client HTTP. 


| Client HTTP | Sincronizzazione o asincrona | Quando utilizzare | Limitazione/inconveniente | 
| --- | --- | --- | --- | 
|  Client HTTP basato su Apache *(client HTTP di sincronizzazione predefinito)* | Sync | Usalo se preferisci una bassa latenza rispetto a un throughput elevato  | Tempo di avvio più lento rispetto ad altri client HTTP | 
| Client HTTP basato su URLConnection | Sync | Usalo se hai una forte esigenza di limitare le dipendenze di terze parti | • Non supporta il metodo HTTP PATCH, richiesto da alcune operazioni APIs come Amazon APIGateway Update<br />• Non supporta un timeout di connessione inattiva configurabile. Per i dettagli, consulta [Configurare il client HTTP URLConnection basato](http-configuration-url.md). | 
| AWS Client HTTP di sincronizzazione basato su CRT 1  | Sync | • Usalo se l'applicazione è in esecuzione in AWS Lambda<br />• Usalo se preferisci un throughput elevato rispetto a una bassa latenza<br />• Usalo se preferisci sincronizzare i client SDK | Le seguenti proprietà del sistema Java non sono supportate:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/sdk-for-java/latest/developer-guide/http-configuration.html) | 
|  Client HTTP basato su Netty *(client HTTP asincrono predefinito)* | Asincrono | • Utilizzatelo se l'applicazione si basa sulle proprietà del sistema Java per la configurazione TLS (ad esempio) `javax.net.ssl.keyStore` | Tempo di avvio più lento rispetto ad altri client HTTP | 
|  AWS Client HTTP asincrono basato su CRT 1  | Asincrono | • Usalo se l'applicazione è in esecuzione in AWS Lambda<br />• Usalo se preferisci un throughput elevato rispetto a una bassa latenza• Usalo se preferisci i client SDK asincroni | Le seguenti proprietà del sistema Java non sono supportate:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/sdk-for-java/latest/developer-guide/http-configuration.html) | 

1 A causa dei loro vantaggi aggiuntivi, si consiglia di utilizzare i client HTTP AWS basati su CRT, se possibile.

## Impostazioni predefinite di configurazione intelligente
<a name="http-config-smart-defaults"></a>

La AWS SDK for Java 2.x (versione 2.17.102 o successiva) offre una funzionalità di configurazione predefinita intelligente. Questa funzionalità ottimizza due proprietà del client HTTP insieme ad altre proprietà che non influiscono sul client HTTP. 

Le impostazioni predefinite di configurazione intelligente impostano valori ragionevoli per le `tlsNegotiationTimeoutInMillis` proprietà `connectTimeoutInMillis` and in base a un valore della modalità defaults fornito dall'utente. Scegliete il valore della modalità predefinita in base alle caratteristiche dell'applicazione. 

[Per ulteriori informazioni sulle impostazioni predefinite di configurazione intelligente e su come scegliere il valore della modalità predefinita più adatto alle applicazioni, consulta la and Tools Reference Guide.AWS SDKs ](https://docs.aws.amazon.com/sdkref/latest/guide/feature-smart-config-defaults.html)

Di seguito sono riportati quattro modi per impostare la modalità predefinita per l'applicazione.

------
#### [ Service client ]

Utilizzate il service client builder per configurare la modalità predefinita direttamente sul client del servizio. L'esempio seguente imposta la modalità predefinita su. `auto` `DynamoDbClient`

```
DynamoDbClient ddbClient = DynamoDbClient.builder()
                            .defaultsMode(DefaultsMode.AUTO)
                            .build();
```

------
#### [ System property ]

È possibile utilizzare la proprietà `aws.defaultsMode` di sistema per specificare la modalità predefinita. Se si imposta la proprietà di sistema in Java, è necessario impostare la proprietà prima di inizializzare qualsiasi client di servizio.

L'esempio seguente mostra come impostare la modalità predefinita sull'`auto`utilizzo di una proprietà di sistema impostata in Java.

```
System.setProperty("aws.defaultsMode", "auto");
```

L'esempio seguente mostra come impostare la modalità predefinita sull'`auto`utilizzo di un'`-D`opzione del comando. `java`

```
java -Daws.defaultsMode=auto
```

------
#### [ Environment variable ]

Imposta un valore per la variabile di ambiente `AWS_DEFAULTS_MODE` per selezionare la modalità predefinita per l'applicazione. 

Le informazioni seguenti mostrano il comando da eseguire per impostare il valore della modalità predefinita sull'`auto`utilizzo di una variabile di ambiente.


| Sistema operativo | Comando per impostare le variabili di ambiente | 
| --- | --- | 
| Linux, macOS o Unix | export AWS\_DEFAULTS\_MODE=auto | 
| Windows | set AWS\_DEFAULTS\_MODE=auto | 

------
#### [ AWS config file ]

È possibile aggiungere una proprietà di `defaults_mode` configurazione al AWS `config` file condiviso come illustrato nell'esempio seguente.

```
[default]
defaults_mode = auto
```

------

Se impostate la modalità predefinita a livello globale con la proprietà di sistema, la variabile di ambiente o il file di AWS configurazione, potete sovrascrivere le impostazioni quando create un client HTTP. 

Quando create un client HTTP con il `httpClientBuilder()` metodo, le impostazioni si applicano solo all'istanza che state creando. Un esempio di ciò è mostrato [qui](http-configuration-netty.md#http-config-netty-one-client). Il client HTTP basato su Netty in questo esempio sostituisce tutti i valori di modalità predefiniti impostati globalmente per and. `connectTimeoutInMillis` `tlsNegotiationTimeoutInMillis`