

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configuração do cliente HTTP
<a name="http-client-config"></a>

Por padrão, o AWS SDK para Kotlin usa um cliente HTTP baseado em [OkHttp](https://square.github.io/okhttp). Você pode substituir o cliente HTTP e sua configuração fornecendo um cliente explicitamente configurado.

**Atenção**  
Independentemente de qual mecanismo HTTP você usa, outras dependências em seu projeto podem ter dependências transitivas que entram em conflito com a versão específica do mecanismo exigida pelo SDK. Em particular, estruturas como o Spring Boot são conhecidas por gerenciar dependências OkHttp e confiar em versões mais antigas do que o SDK. Consulte [Como faço para resolver conflitos de dependência?](ts-faq-dep-conflict-resolution.md) para obter mais informações.

**nota**  
Por padrão, cada cliente de serviço usa sua própria cópia de um cliente HTTP. Se você usa vários serviços em seu aplicativo, talvez queira criar um único cliente HTTP e compartilhá-lo com todos os clientes de serviço.

## Configuração básica
<a name="basic-http-confg"></a>

Ao configurar um cliente de serviço, você pode configurar o tipo de mecanismo padrão. O SDK gerencia o mecanismo do cliente HTTP resultante e o fecha automaticamente quando não é mais necessário.

O exemplo a seguir mostra a configuração de um cliente HTTP durante a inicialização de um cliente do DynamoDB.

### Importações
<a name="basic-config-ex-imports"></a>

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

### Código
<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.
}
```

## Configurações avançadas
<a name="advanced-http-config"></a>

A configuração HTTP padrão é adequada para a maioria dos casos de uso. Para alguns casos de uso avançados, como ambientes de alto rendimento, as seguintes opções de configuração avançada fornecem recursos e capacidades adicionais: 

### Especifique um tipo de mecanismo HTTP
<a name="http-config-engine"></a>

Para especificar um tipo de mecanismo HTTP não padrão ou para personalizar a configuração específica de um determinado tipo de mecanismo HTTP, você pode passar um parâmetro adicional `httpClient` que especifique o tipo de mecanismo. 

O exemplo a seguir especifica o [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)que você pode usar para configurar a [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)propriedade.

#### Importações
<a name="http-config-specify-engine-imports"></a>

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

#### Código
<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.
}
```

Os valores possíveis para o tipo de motor são `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), [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)e. 

Para usar parâmetros de configuração específicos de um mecanismo HTTP, você deve adicionar o mecanismo como uma dependência em tempo de compilação. Para o`OkHttpEngine`, você adiciona a seguinte dependência usando o Gradle.

(Você pode navegar até o {{X.Y.Z}} link para ver a versão mais recente disponível.)

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

Para o`CrtHttpEngine`, adicione a seguinte dependência.

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

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

Use o `OkHttp4Engine` se você não puder usar o padrão`OkHttpEngine`. O [ GitHub repositório smithy-kotlin](https://github.com/smithy-lang/smithy-kotlin/tree/main/runtime/protocol/http-client-engines/http-client-engine-okhttp4) tem informações sobre como você configura e usa o. `OkHttp4Engine`

#### Use um cliente HTTP explícito
<a name="http-client-explicit-usage"></a>

Quando você usa um cliente HTTP explícito, você é responsável por sua vida útil, incluindo o fechamento quando não precisa mais dele. Um cliente HTTP deve durar pelo menos tanto quanto qualquer cliente de serviço que o use.

O exemplo de código a seguir mostra o código que mantém o cliente HTTP ativo enquanto o `DynamoDbClient` está ativo. A [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)função garante que o cliente HTTP feche corretamente.

##### Importações
<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
```

##### Código
<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.
        }
    }
}
```

### Monitoramento de conexão ociosa
<a name="http-idle-connection-monitoring"></a>

**Importante**  
 O recurso de OkHttp pesquisa de marcha lenta da conexão ([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)) foi substituído por novas tentativas automáticas de falha de conexão (). [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) ****A pesquisa de conexão ociosa será **descontinuada** na versão **v1.7 do SDK e será removida na versão v1.8** do SDK.**** Consulte [a postagem de GitHub discussão relacionada](https://github.com/aws/aws-sdk-kotlin/discussions/1797) para obter mais detalhes. 

[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/)fornece a opção [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)de configuração para monitorar conexões ociosas para fechamento remoto. Esse recurso detecta quando os serviços têm conexões fechadas que ainda estão no pool de conexões, evitando erros nas solicitações subsequentes. 

Quando `connectionIdlePollingInterval` definido como um valor não nulo, o mecanismo pesquisa as conexões que são liberadas de volta para o pool de conexões. O processo de pesquisa realiza leituras de bloqueio com o tempo limite do soquete definido para o intervalo especificado. A pesquisa é cancelada automaticamente quando o motor adquire a conexão do pool ou quando a conexão é despejada e fechada. 

Quando esse valor é `null` (o padrão), a pesquisa é desativada. Conexões ociosas no pool que são fechadas remotamente podem encontrar erros ao serem adquiridas para chamadas subsequentes.

**nota**  
 Como o ciclo de pesquisa usa leituras de bloqueio, as chamadas do mecanismo para adquirir ou fechar uma conexão podem ser atrasadas tanto quanto o `connectionIdlePollingInterval` intervalo. Escolher um valor baixo para o intervalo significa que o SDK adquirirá conexões mais rapidamente, às custas de um maior uso de recursos ociosos. 

#### Importações
<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
```

#### Código
<a name="http-idle-connection-ex-code"></a>

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