

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à.

# Configurazione del client HTTP
<a name="http-client-config"></a>

Per impostazione predefinita, AWS SDK per Kotlin utilizza un client HTTP basato su [OkHttp](https://square.github.io/okhttp). È possibile sovrascrivere il client HTTP e la sua configurazione fornendo un client configurato in modo esplicito.

**avvertimento**  
Indipendentemente dal motore HTTP utilizzato, altre dipendenze del progetto potrebbero avere dipendenze transitive in conflitto con la versione specifica del motore richiesta dall'SDK. In particolare, è noto che framework come Spring Boot gestiscono dipendenze come OkHttp e si basano su versioni precedenti all'SDK. Per ulteriori informazioni, consulta la pagina[Come posso risolvere i conflitti di dipendenza?](ts-faq-dep-conflict-resolution.md).

**Nota**  
Per impostazione predefinita, ogni client di servizio utilizza la propria copia di un client HTTP. Se utilizzi più servizi nella tua applicazione, potresti voler creare un singolo client HTTP e condividerlo tra tutti i client di servizio.

## Configurazione di base
<a name="basic-http-confg"></a>

Quando configuri un client di servizio, puoi configurare il tipo di motore predefinito. L'SDK gestisce il motore client HTTP risultante e lo chiude automaticamente quando non è più necessario.

L'esempio seguente mostra la configurazione di un client HTTP durante l'inizializzazione di un client DynamoDB.

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

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

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

## Configurazione avanzata
<a name="advanced-http-config"></a>

La configurazione HTTP predefinita è adatta alla maggior parte dei casi d'uso. Per alcuni casi d'uso avanzati, come gli ambienti ad alto throughput, le seguenti opzioni di configurazione avanzate offrono funzionalità e funzionalità aggiuntive: 

### Specificare un tipo di motore HTTP
<a name="http-config-engine"></a>

Per specificare un tipo di motore HTTP non predefinito o per personalizzare una configurazione specifica per un particolare tipo di motore HTTP, puoi passare un parametro aggiuntivo `httpClient` che specifica il tipo di motore. 

L'esempio seguente specifica [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)ciò che è possibile utilizzare per configurare la proprietà. [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)

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

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

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

I valori possibili per il tipo di motore sono `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), e [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). 

Per utilizzare i parametri di configurazione specifici di un motore HTTP, è necessario aggiungere il motore come dipendenza in fase di compilazione. Per il`OkHttpEngine`, aggiungi la seguente dipendenza usando Gradle.

(Puoi accedere al *X.Y.Z* link per vedere l'ultima versione disponibile.)

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

Per il`CrtHttpEngine`, aggiungi la seguente dipendenza.

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

#### Utilizzo della `OkHttp4Engine`
<a name="http-config-okhttp4engine"></a>

Usa il `OkHttp4Engine` se non puoi usare l'impostazione predefinita`OkHttpEngine`. Il [ GitHub repository smithy-kotlin](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) contiene informazioni su come configurare e utilizzare il. `OkHttp4Engine`

#### Usa un client HTTP esplicito
<a name="http-client-explicit-usage"></a>

Quando utilizzi un client HTTP esplicito, sei responsabile della sua durata, inclusa la chiusura quando non ne hai più bisogno. Un client HTTP deve funzionare almeno quanto qualsiasi client di servizio che lo utilizza.

Il seguente esempio di codice mostra il codice che mantiene attivo il client HTTP mentre `DynamoDbClient` è attivo. 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)funzione assicura che il client HTTP si chiuda correttamente.

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

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

### Monitoraggio della connessione inattiva
<a name="http-idle-connection-monitoring"></a>

**Importante**  
 La funzione di polling della connessione inattiva del OkHttp motore ([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)) è stata sostituita dai tentativi automatici di errore di connessione (). [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) ******Il polling delle connessioni inattive sarà **obsoleto nella versione SDK v1.7 e verrà rimosso nella versione** SDK v1.8.****** [Per maggiori dettagli, consulta il relativo post di discussione. GitHub ](https://github.com/aws/aws-sdk-kotlin/discussions/1797) 

[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/)fornisce l'opzione [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)di configurazione per monitorare le connessioni inattive per la chiusura remota. Questa funzionalità rileva quando i servizi hanno connessioni chiuse che si trovano ancora nel pool di connessioni, prevenendo errori nelle richieste successive. 

Quando `connectionIdlePollingInterval` è impostato su un valore non nullo, il motore esegue il polling delle connessioni che vengono rilasciate nuovamente al pool di connessioni. Il processo di polling esegue il blocco delle letture con il timeout del socket impostato sull'intervallo specificato. Il polling viene annullato automaticamente quando il motore acquisisce la connessione dal pool o quando la connessione viene eliminata e chiusa. 

Quando questo valore è `null` (impostazione predefinita), il polling è disabilitato. Le connessioni inattive nel pool chiuse in remoto possono riscontrare errori quando vengono acquisite per le chiamate successive.

**Nota**  
 Poiché il poling loop utilizza letture bloccanti, le chiamate del motore per acquisire o chiudere una connessione possono subire un ritardo pari all'intervallo. `connectionIdlePollingInterval` La scelta di un valore basso per l'intervallo significa che l'SDK acquisirà connessioni più velocemente, a scapito di un maggiore utilizzo delle risorse inattive. 

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

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

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