

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

# Configurar o cliente HTTP baseado em Apache 5.x
<a name="http-configuration-apache5"></a>

## Acesse o Apache5 HttpClient
<a name="http-apache-5-dependency"></a>

Para usar o, `Apache5HttpClient` você deve adicionar uma dependência **apache5-client** e configurar explicitamente `Apache5HttpClient` em seus clientes de serviço.

```
<dependencyManagement>
   <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>2.41.0*</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
    </dependency>
    
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>apache5-client</artifactId>
    </dependency>
</dependencies>
```

\$1Substitua a versão mostrada em vermelho pela versão do Java SDK que você deseja usar. Encontre as últimas novidades no [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

### Usar e configurar o `Apache5HttpClient`
<a name="http-config-apache-5-config"></a>

Você pode configurar uma instância do `Apache5HttpClient` junto com a criação de um cliente de serviço ou pode configurar uma única instância para compartilhar entre vários clientes de serviço. 

Com qualquer abordagem, você usa o [Apache5 HttpClient .Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.Builder.html) para configurar as propriedades do cliente HTTP baseado no Apache 5.

#### Melhor prática: dedicar uma HttpClient instância do Apache5 a um cliente de serviço
<a name="http-apache5-dedicated-instance"></a>

Se você precisar configurar uma instância do `Apache5HttpClient`, recomendamos que você crie a instância `Apache5HttpClient` dedicada. Você pode fazer isso usando o httpClientBuilder método do construtor do cliente de serviço. Dessa forma, o ciclo de vida do cliente HTTP é gerenciado pelo SDK, o que ajuda a evitar possíveis vazamentos de memória se a instância do `Apache5HttpClient` não for fechada quando não for mais necessária.

O exemplo a seguir cria um S3Client e configura a instância incorporada `Apache5HttpClient` com valores maxConnections e connectionTimeout. A instância HTTP é criada usando o método `httpClientBuilder` do `S3Client.Builder`.

**Importações**

```
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.s3.S3Client;
import java.time.Duration;
```

**Código**

```
S3Client s3Client = S3Client   // Singleton: Use the s3Client for all requests.
    .builder()
    .httpClientBuilder(Apache5HttpClient.builder()
        .maxConnections(100)
        .connectionTimeout(Duration.ofSeconds(5))
    )
    .build();

// Perform work with the s3Client.

s3Client.close();   // Requests completed: Close all service clients.
```

#### Abordagem alternativa: compartilhar uma instância do `Apache5HttpClient`
<a name="http-apache5-shared-instance"></a>

Para ajudar a reduzir o uso de recursos e memória do seu aplicativo, você pode configurar um `Apache5HttpClient` e compartilhá-lo entre vários clientes de serviço. O pool de conexões HTTP será compartilhado, o que reduz o uso de recursos.

**nota**  
Quando uma instância do `Apache5HttpClient` é compartilhada, você deve fechá-la quando ela estiver pronta para ser descartada. O SDK não fechará a instância quando o cliente de serviço for fechado.

O exemplo a seguir configura um cliente HTTP baseado em Apache, que é usado por dois clientes de serviço. A `ApacheHttpClient` instância configurada é passada para o método HttpClient de cada construtor. Quando os clientes do serviço e o cliente HTTP não são mais necessários, o código os fecha explicitamente. O código fecha o cliente HTTP por último.

**Importações**

```
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.apache5.Apache5HttpClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.s3.S3Client;
```

**Código**

```
SdkHttpClient apache5HttpClient = Apache5HttpClient.builder()
        .maxConnections(100).build();

// Singletons: Use the s3Client and dynamoDbClient for all requests.
S3Client s3Client = 
    S3Client.builder()
            .httpClient(apache5HttpClient).build();

DynamoDbClient dynamoDbClient = 
    DynamoDbClient.builder()
                  .httpClient(apache5HttpClient).build();

// Perform work with the s3Client and dynamoDbClient.

// Requests completed: Close all service clients.
s3Client.close();
dynamoDbClient.close();
apache5HttpClient.close();  // Explicitly close apache5HttpClient.
```