> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuração de HTTP

> Defina as configurações de nova tentativa, tempo limite e compactação de respostas HTTP do SDK do PlayFab Services para C usando PFSetHttpRetrySettings e APIs relacionadas.

O SDK do PlayFab Services fornece funções para configurar como as solicitações HTTP são feitas, incluindo o comportamento de nova tentativa automática e a compactação de respostas. Essas configurações são globais e se aplicam a todas as chamadas de API do PlayFab feitas pelo SDK.

Defina as configurações de HTTP depois de chamar [**PFInitialize**](/pt-BR/services/playfab/api-references/c/pfcore/functions/pfinitialize) and [**PFServicesInitialize**](/pt-BR/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize), mas antes de fazer qualquer chamada de API.

## Configurações de nova tentativa

O struct **PFHttpRetrySettings** controla como o SDK trata falhas HTTP transitórias, como erros de limitação (HTTP 429). Por padrão, o SDK tenta novamente essas falhas automaticamente, com espera progressiva.

| Campo | Tipo | Padrão | Descrição |
| - | - | - | - |
| `allowRetry` | `bool` | `true` | Controla se o SDK tenta novamente, de forma automática, determinados erros. Alguns erros nunca são repetidos e sempre são retornados diretamente. |
| `minimumRetryDelayInSeconds` | `uint32_t` | 2 | O número mínimo de segundos de espera antes de tentar novamente uma solicitação com falha. Não pode ser definido abaixo de 2 segundos. |
| `timeoutWindowInSeconds` | `uint32_t` | 20 | O número máximo de segundos durante os quais o SDK faz novas tentativas antes de retornar o erro ao chamador. |

Para obter mais informações sobre quais erros o SDK tenta novamente de forma automática, consulte [Tratando erros do PlayFab](/pt-BR/services/playfab/sdks/c/errors).

### Definir as configurações de nova tentativa

Chame **PFSetHttpRetrySettings** para personalizar o comportamento de nova tentativa. Por exemplo, para aumentar a janela de novas tentativas em chamadas que toleram esperas mais longas:

```cpp theme={null}
PFHttpRetrySettings retrySettings{};
retrySettings.allowRetry = true;
retrySettings.minimumRetryDelayInSeconds = 4;
retrySettings.timeoutWindowInSeconds = 60;

HRESULT hr = PFSetHttpRetrySettings(&retrySettings);
if (FAILED(hr))
{
    // Handle error
}
```

### Obter as configurações de nova tentativa

Chame **PFGetHttpRetrySettings** para recuperar a configuração de nova tentativa atual:

```cpp theme={null}
PFHttpRetrySettings currentSettings{};
HRESULT hr = PFGetHttpRetrySettings(&currentSettings);
if (SUCCEEDED(hr))
{
    printf("Retry enabled: %s\n", currentSettings.allowRetry ? "true" : "false");
    printf("Min delay: %u seconds\n", currentSettings.minimumRetryDelayInSeconds);
    printf("Timeout window: %u seconds\n", currentSettings.timeoutWindowInSeconds);
}
```

### Desabilitar novas tentativas automáticas

Se quiser tratar toda a lógica de nova tentativa por conta própria, desabilite as novas tentativas automáticas:

```cpp theme={null}
PFHttpRetrySettings retrySettings{};
retrySettings.allowRetry = false;
retrySettings.minimumRetryDelayInSeconds = 2;
retrySettings.timeoutWindowInSeconds = 20;

HRESULT hr = PFSetHttpRetrySettings(&retrySettings);
```

## Configurações de HTTP

O struct **PFHttpSettings** controla o comportamento HTTP geral de todas as solicitações do SDK.

| Campo | Tipo | Padrão | Descrição |
| - | - | - | - |
| `requestResponseCompression` | `bool` | `false` | Quando habilitado, o SDK solicita que as respostas da API sejam compactadas com gzip, definindo o cabeçalho `Accept-Encoding` como `application/gzip`. |

### Habilitar a compactação de respostas

Habilitar a compactação de respostas pode reduzir o uso de largura de banda, o que é útil para chamadas que retornam payloads grandes. Chame **PFSetHttpSettings** para habilitá-la:

```cpp theme={null}
PFHttpSettings httpSettings{};
httpSettings.requestResponseCompression = true;

HRESULT hr = PFSetHttpSettings(&httpSettings);
if (FAILED(hr))
{
    // Handle error
}
```

<Note>
  Para descompactar uma resposta compactada, **HCHttpCallResponseSetGzipCompressed** deve ser chamado antes de chamar **HCHttpCallPerformAsync**.
</Note>

### Obter as configurações de HTTP

Chame **PFGetHttpSettings** para recuperar a configuração de HTTP atual:

```cpp theme={null}
PFHttpSettings currentSettings{};
HRESULT hr = PFGetHttpSettings(&currentSettings);
if (SUCCEEDED(hr))
{
    printf("Response compression: %s\n", currentSettings.requestResponseCompression ? "enabled" : "disabled");
}
```

## Padrão típico de inicialização

O exemplo a seguir mostra onde a configuração de HTTP se encaixa no fluxo geral de inicialização do SDK:

```cpp theme={null}
// 1. Initialize the SDK
HRESULT hr = PFInitialize(nullptr);
hr = PFServicesInitialize(nullptr);

// 2. Configure HTTP settings before making any API calls
PFHttpRetrySettings retrySettings{};
retrySettings.allowRetry = true;
retrySettings.minimumRetryDelayInSeconds = 2;
retrySettings.timeoutWindowInSeconds = 30;
PFSetHttpRetrySettings(&retrySettings);

PFHttpSettings httpSettings{};
httpSettings.requestResponseCompression = true;
PFSetHttpSettings(&httpSettings);

// 3. Create service config and begin making API calls
// ...
```


## Related topics

- [URIs de configuração autônoma](/pt-BR/reference/deviceportal/unattendedsetup/atoc-rest-unattendedsetup.md)
- [Visão geral da configuração de stream do Aplicativo de Teste de Conteúdo (CTA)](/pt-BR/build/core-features/common/game-streaming/game-streaming-content-test-application-stream-config.md)
- [Descrição das APIs do medidor de leituras de conteúdo e configuração](/pt-BR/services/playfab/pricing/meters/file-reads.md)
- [Configuração de segmentos](/pt-BR/services/playfab/live-service-management/game-configuration/segmentation/segmentation-configuration.md)
- [Descrição das APIs do medidor de gravações de conteúdo e configuração](/pt-BR/services/playfab/pricing/meters/file-writes.md)
