

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

# Configure clientes HTTP no AWS SDK for Java 2.x
<a name="http-configuration"></a>

É possível alterar o cliente HTTP a ser usado para o cliente de serviço, bem como alterar a configuração padrão para clientes HTTP com o AWS SDK for Java 2.x. Esta seção discute os clientes HTTP e as configurações do SDK.

## Clientes HTTP disponíveis no SDK para Java
<a name="http-clients-available"></a>

### Clientes síncronos
<a name="http-config-sync"></a>

Clientes HTTP síncronos no SDK for Java implementam [SdkHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/SdkHttpClient.html)a interface. Um cliente de serviço síncrono, como o `S3Client` ou o `DynamoDbClient`, requer o uso de um cliente HTTP síncrono. O AWS SDK para Java oferece três clientes HTTP síncronos.

**ApacheHttpClient (padrão)**  
[ApacheHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache/ApacheHttpClient.html)é o cliente HTTP padrão para clientes de serviços síncronos. Para obter mais informações sobre a configuração do `ApacheHttpClient`, consulte [Configurar o cliente HTTP baseado em Apache](http-configuration-apache.md). 

**AwsCrtHttpClient**  
[AwsCrtHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtHttpClient.html)fornece alto rendimento e E/S sem bloqueio. Ele é construído no AWS Common Runtime (CRT) Http Client. Para receber informações sobre como configurar o `AwsCrtHttpClient` e usá-lo com clientes de serviço, consulte [Configurar clientes AWS HTTP baseados em CRT](http-configuration-crt.md).

**UrlConnectionHttpClient**  
Para minimizar o número de jars e bibliotecas de terceiros que seu aplicativo usa, você pode usar o. [UrlConnectionHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/urlconnection/UrlConnectionHttpClient.html) Para obter mais informações sobre a configuração do `UrlConnectionHttpClient`, consulte [Configurar o cliente HTTP URLConnection baseado](http-configuration-url.md).

**Apache 5 HttpClient**  
[O Apache5 HttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/apache5/Apache5HttpClient.html) *é uma versão atualizada `ApacheHttpClient` que é construída no Apache 5.x. HttpClient A versão 5.x* é a versão mantida ativamente pelo Apache e melhora a versão anterior usada, trazendo compatibilidade com o ecossistema Java moderno, incluindo suporte a threads virtuais para Java 21 e maior flexibilidade de registro por meio de SLF4 J. `Apache5HttpClient` will replace `ApacheHttpClient` como cliente síncrono padrão em uma versão futura do SDK for AWS Java 2.x. `ApacheHttpClient` Ele tem uma API e recursos idênticos, o que o torna ideal como substituto imediato. Para obter mais informações sobre a configuração do `Apache5HttpClient`, consulte [Configurar o cliente HTTP baseado em Apache 5.x](http-configuration-apache5.md).

### Clientes assíncronos
<a name="http-config-async"></a>

Clientes HTTP assíncronos no SDK for Java implementam a interface. [SdkAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/async/SdkAsyncHttpClient.html) Um cliente de serviço assíncrono, como o `S3AsyncClient` ou o `DynamoDbAsyncClient`, requer o uso de um cliente HTTP assíncrono. O AWS SDK para Java oferece dois clientes HTTP assíncronos.

**NettyNioAsyncHttpClient (padrão)**  
[NettyNioAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/nio/netty/NettyNioAsyncHttpClient.html)é o cliente HTTP padrão usado por clientes assíncronos. Para obter mais informações sobre a configuração do `NettyNioAsyncHttpClient`, consulte [Configurar o cliente HTTP baseado em Netty](http-configuration-netty.md).

**AwsCrtAsyncHttpClient**  
[AwsCrtAsyncHttpClient](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.html)É baseado no cliente HTTP AWS Common Runtime (CRT). Para obter mais informações sobre a configuração do `AwsCrtAsyncHttpClient`, consulte [Configurar clientes AWS HTTP baseados em CRT](http-configuration-crt.md). 

## Recomendações do cliente HTTP
<a name="http-clients-recommend"></a>

Diversos fatores entram em cena quando você escolhe uma implementação de cliente HTTP. Use as informações a seguir para ajudá-lo a decidir.

### Comparação de clientes HTTP
<a name="http-clients-recommend-compare"></a>

A tabela a seguir contém informações detalhadas para cada cliente HTTP. 


| Cliente HTTP | Síncrono ou assíncrono | Quando usar | Limitação/desvantagem | 
| --- | --- | --- | --- | 
|  Cliente HTTP baseado em Apache *(cliente HTTP síncrono padrão)* | Síncrono | Use-o se você preferir baixa latência em vez de alta taxa de transferência  | Tempo de inicialização mais lento em comparação com outros clientes HTTP | 
| Cliente HTTP baseado em URLConnection | Sincronização | Use-o se você tiver um requisito rígido de limitar dependências de terceiros | • Não suporta o método HTTP PATCH, exigido por algumas operações, APIs como o Amazon APIGateway Update<br />• Não suporta um tempo limite de conexão ociosa configurável. Consulte [Configurar o cliente HTTP URLConnection baseado](http-configuration-url.md) para obter detalhes. | 
| AWS Cliente HTTP de sincronização baseado em CRT 1  | Sincronização | • Use-o se seu aplicativo estiver sendo executado em AWS Lambda<br />• Use-o se você preferir alta taxa de transferência em vez de baixa latência<br />• Use-o se preferir clientes do SDK síncronos. | As seguintes propriedades do sistema Java não são compatíveis:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sdk-for-java/latest/developer-guide/http-configuration.html) | 
|  Cliente HTTP baseado em Netty *(cliente HTTP síncrono padrão)* | Assíncrono | • Use-o se seu aplicativo depender das propriedades do sistema Java para configuração de TLS (como) `javax.net.ssl.keyStore` | Tempo de inicialização mais lento em comparação com outros clientes HTTP | 
|  AWS Cliente HTTP assíncrono baseado em CRT 1  | Assíncrono | • Use-o se seu aplicativo estiver sendo executado no AWS Lambda<br />• Use-o se você preferir alta taxa de transferência em vez de baixa latência• Use-o se preferir clientes do SDK assíncronos. | As seguintes propriedades do sistema Java não são compatíveis:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/sdk-for-java/latest/developer-guide/http-configuration.html) | 

1 Por causa de seus benefícios adicionais, recomendamos que você use os clientes HTTP AWS baseados em CRT, se possível.

## Padrões de configuração inteligentes
<a name="http-config-smart-defaults"></a>

A AWS SDK for Java 2.x (versão 2.17.102 ou posterior) oferece um recurso de padrões de configuração inteligente. Esse recurso otimiza duas propriedades do cliente HTTP além de outras propriedades que não afetam o cliente HTTP. 

Os padrões de configuração inteligentes definem valores razoáveis para as propriedades `connectTimeoutInMillis` e `tlsNegotiationTimeoutInMillis` com base em um valor de modo padrão fornecido por você. Você escolhe o valor de modo padrão com base nas características do seu aplicativo. 

Para obter mais informações sobre padrões de configuração inteligente e como escolher o valor do modo padrão mais adequado para seus aplicativos, consulte o Guia de referência de ferramentas [AWS SDKs e](https://docs.aws.amazon.com/sdkref/latest/guide/feature-smart-config-defaults.html) ferramentas.

A seguir estão quatro maneiras de definir o modo padrão para seu aplicativo.

------
#### [ Service client ]

Use o builder do cliente de serviço para configurar o modo padrão diretamente no cliente de serviço. O exemplo a seguir define o modo padrão como `auto` para o `DynamoDbClient`.

```
DynamoDbClient ddbClient = DynamoDbClient.builder()
                            .defaultsMode(DefaultsMode.AUTO)
                            .build();
```

------
#### [ System property ]

Você pode usar a propriedade `aws.defaultsMode` do sistema para especificar o modo padrão. Se você definir a propriedade do sistema em Java, precisará defini-la antes de inicializar qualquer cliente de serviço.

O exemplo a seguir mostra como definir o modo padrão como `auto` usando uma propriedade do sistema definida em Java.

```
System.setProperty("aws.defaultsMode", "auto");
```

O exemplo a seguir demonstra como definir o modo padrão como `auto` usando uma opção `-D` do comando `java`.

```
java -Daws.defaultsMode=auto
```

------
#### [ Environment variable ]

Defina um valor para a variável de ambiente `AWS_DEFAULTS_MODE` para selecionar o modo padrão para o seu aplicativo. 

As informações a seguir mostram o comando a ser executado para definir o valor do modo padrão como `auto` usando uma variável de ambiente.


| Sistema operacional | Comando para definir variáveis de ambiente | 
| --- | --- | 
| Linux, macOS ou Unix | export AWS\_DEFAULTS\_MODE=auto | 
| Windows | set AWS\_DEFAULTS\_MODE=auto | 

------
#### [ AWS config file ]

Você pode adicionar uma propriedade `defaults_mode` de configuração ao AWS `config` arquivo compartilhado, conforme mostrado no exemplo a seguir.

```
[default]
defaults_mode = auto
```

------

Se você definir o modo padrão globalmente com a propriedade do sistema, a variável de ambiente ou o arquivo config da AWS , poderá substituir as configurações ao criar um cliente HTTP. 

Quando você cria um cliente HTTP com o método `httpClientBuilder()`, as configurações se aplicam somente à instância que você está criando. Um exemplo disso é mostrado [aqui](http-configuration-netty.md#http-config-netty-one-client). O cliente HTTP baseado em Netty neste exemplo substitui todos os valores de modo padrão definidos globalmente para `connectTimeoutInMillis` e `tlsNegotiationTimeoutInMillis`.