

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Configurar el cliente HTTP basado en Apache 5.x
<a name="http-configuration-apache5"></a>

## Acceda al Apache5 HttpClient
<a name="http-apache-5-dependency"></a>

Para poder utilizar el, `Apache5HttpClient` debe agregar una dependencia **apache5-client** y configurarlo explícitamente `Apache5HttpClient` en sus clientes de servicio.

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

\$1Reemplace la versión que se muestra en rojo por la versión del SDK de Java que desee utilizar. Busque las últimas novedades sobre [Maven Central](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

### Utilizar y configurar el `Apache5HttpClient`
<a name="http-config-apache-5-config"></a>

Puede configurar una instancia del `Apache5HttpClient` junto con la creación de un cliente de servicio, o configurar una sola instancia para compartirla entre varios clientes de servicio. 

Con cualquiera de los dos enfoques, se utiliza el [Apache5 HttpClient .Builder](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.Builder.html) para configurar las propiedades del cliente HTTP basado en Apache 5.

#### Práctica recomendada: dedicar una instancia de Apache5 HttpClient a un cliente de servicio
<a name="http-apache5-dedicated-instance"></a>

Si necesita configurar una instancia del `Apache5HttpClient`, le recomendamos que cree la instancia `Apache5HttpClient` dedicada. Para ello, utilice el httpClientBuilder método del creador del cliente de servicio. De esta forma, el SDK administra el ciclo de vida del cliente HTTP, lo que ayuda a evitar posibles pérdidas de memoria si la instancia `Apache5HttpClient` no se cierra cuando ya no se necesita.

En el siguiente ejemplo, se crea un S3Client y se configura la instancia integrada `Apache5HttpClient` con los valores MaxConnections y ConnectionTimeout. La instancia HTTP se crea mediante el método `httpClientBuilder` de `S3Client.Builder`.

**Importaciones**

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

#### Enfoque alternativo: compartir una instancia `Apache5HttpClient`
<a name="http-apache5-shared-instance"></a>

Para reducir el uso de recursos y memoria en su aplicación, puede configurar un `Apache5HttpClient` y compartirlo entre varios clientes de servicio. El grupo de conexiones HTTP se compartirá, lo que reduce el uso de recursos.

**nota**  
Al compartir una instancia de `Apache5HttpClient`, es preciso cerrarla cuando esté lista para ser eliminada. El SDK no cerrará la instancia cuando el cliente del servicio esté cerrado.

En el siguiente ejemplo, se configura un cliente HTTP basado en Apache, utilizado por dos clientes de servicio. La `ApacheHttpClient` instancia configurada se pasa al método HttpClient de cada generador. Cuando los clientes de servicio y el cliente HTTP ya no son necesarios, el código los cierra de forma explícita. El código cierra el cliente HTTP por última vez.

**Importaciones**

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