

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>

El SDK `Apache5HttpClient` se basa en el Apache [ HttpClient 5.x. ](https://hc.apache.org/httpcomponents-client-5.6.x/index.html)

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

En la mayoría de las situaciones, `Apache5HttpClient` se utiliza sin ninguna configuración explícita. Declare sus clientes de servicios y el SDK configurará los `Apache5HttpClient` con valores estándar por usted.

Si quiere configurar de forma explícita el `Apache5HttpClient` o usarlo con varios clientes de servicio, tiene que hacerlo disponible para su configuración.

### No se necesita configuración
<a name="http-config-apache-5-no-config"></a>

Cuando declara una dependencia de un cliente de servicio en Maven, el SDK añade una dependencia en *tiempo de ejecución* del artefacto `apache5-client`. Esto hace que la clase `Apache5HttpClient` esté disponible para su código en el tiempo de ejecución, pero no en el de compilación. Si no está configurando el cliente Apache-based HTTP, no necesita especificar una dependencia para él.

En el siguiente fragmento XML de un `pom.xml` archivo de Maven, la dependencia declarada con introduce `<artifactId>s3</artifactId>` automáticamente el Apache-based cliente HTTP. No necesita declarar una dependencia específicamente para ella.

```
<dependencyManagement>
   <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>bom</artifactId>
            <version>{{2.54.0*}}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <!-- The s3 dependency automatically adds a runtime dependency on the Apache5HttpClient-->
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>s3</artifactId>
    </dependency>
</dependencies>
```

\*Reemplace 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).

Con estas dependencias, no puede realizar ningún cambio en la configuración HTTP, ya que la biblioteca `Apache5HttpClient` solo se encuentra en la ruta de clases del tiempo de ejecución. 

### Se necesita configuración
<a name="http-config-apache-5-yes-config"></a>

Para configurar el `Apache5HttpClient`, es necesario añadir una dependencia a la biblioteca `apache5-client` en el momento de la *compilación*. 

Consulte el siguiente ejemplo de un archivo `pom.xml` Maven para configurar el `Apache5HttpClient`.

```
    <dependencyManagement>
	        <dependencies>
	            <dependency>
	                <groupId>software.amazon.awssdk</groupId>
	                <artifactId>bom</artifactId>
                    <version>{{2.54.0*}}</version>
	                <type>pom</type>
	                <scope>import</scope>
	            </dependency>
	        </dependencies>
	    </dependencyManagement>
	    <dependencies>
	        <dependency>
	            <groupId>software.amazon.awssdk</groupId>
	            <artifactId>s3</artifactId>
	        </dependency>
	        <!-- By adding the apache5-client dependency, Apache5HttpClient will be added to 
	             the compile classpath so you can configure it. -->
	        <dependency>
	            <groupId>software.amazon.awssdk</groupId>
	            <artifactId>apache5-client</artifactId>
	        </dependency>
	    </dependencies>
```

\*Reemplace 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. 

En cualquiera de los dos enfoques, se utiliza el [ Apache5HttpClient.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 Apache5HttpClient instancia 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. Puede hacerlo mediante el ClientBuilder método http del generador 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 incrustada de `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.

El siguiente ejemplo configura un cliente Apache-based HTTP que utilizan dos clientes de servicio. La `Apache5HttpClient` 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.
```