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

# Configuración HTTP

> Configure los reintentos HTTP, el tiempo de espera y la compresión de respuestas para el SDK de C de PlayFab Services mediante PFSetHttpRetrySettings y API relacionadas.

El SDK de PlayFab Services proporciona funciones para configurar cómo se realizan las solicitudes HTTP, incluido el comportamiento de reintento automático y la compresión de respuestas. Estos valores son globales y se aplican a todas las llamadas de API de PlayFab realizadas por el SDK.

Configure los valores HTTP después de llamar a [**PFInitialize**](https://docs.xbox.com/es/services/playfab/api-references/c/pfcore/functions/pfinitialize.md) y [**PFServicesInitialize**](https://docs.xbox.com/es/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize.md), pero antes de realizar cualquier llamada de API.

## Configuración de reintentos

La estructura **PFHttpRetrySettings** controla cómo el SDK gestiona los errores HTTP transitorios, como los errores de limitación (HTTP 429). De forma predeterminada, el SDK reintenta automáticamente estos errores con retroceso.

| Campo | Tipo | Valor predeterminado | Descripción |
| - | - | - | - |
| `allowRetry` | `bool` | `true` | Controla si el SDK reintenta automáticamente determinados errores. Algunos errores nunca se reintentan y siempre se devuelven directamente. |
| `minimumRetryDelayInSeconds` | `uint32_t` | 2 | El número mínimo de segundos que hay que esperar antes de reintentar una solicitud con error. No puede establecerse por debajo de 2 segundos. |
| `timeoutWindowInSeconds` | `uint32_t` | 20 | El número máximo de segundos durante los que el SDK intenta reintentos antes de devolver el error al autor de la llamada. |

Para obtener más información sobre qué errores reintenta el SDK automáticamente, consulte [Control de errores de PlayFab](https://docs.xbox.com/es/services/playfab/sdks/c/errors.md).

### Establecer la configuración de reintentos

Llame a **PFSetHttpRetrySettings** para personalizar el comportamiento de reintento. Por ejemplo, para aumentar la ventana de reintentos en llamadas que pueden tolerar esperas más largas:

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

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

### Obtener la configuración de reintentos

Llame a **PFGetHttpRetrySettings** para recuperar la configuración de reintentos actual:

```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);
}
```

### Deshabilitar los reintentos automáticos

Si quiere controlar toda la lógica de reintentos usted mismo, deshabilite los reintentos automáticos:

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

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

## Configuración HTTP

La estructura **PFHttpSettings** controla el comportamiento HTTP general de todas las solicitudes del SDK.

| Campo | Tipo | Valor predeterminado | Descripción |
| - | - | - | - |
| `requestResponseCompression` | `bool` | `false` | Cuando está habilitado, el SDK solicita que las respuestas de la API se compriman con gzip estableciendo el encabezado `Accept-Encoding` en `application/gzip`. |

### Habilitar la compresión de respuestas

Habilitar la compresión de respuestas puede reducir el uso de ancho de banda, lo que resulta útil para las llamadas que devuelven cargas grandes. Llame a **PFSetHttpSettings** para habilitarla:

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

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

> [!NOTE]
>
> Para descomprimir una respuesta comprimida, debe llamarse a **HCHttpCallResponseSetGzipCompressed** antes de llamar a **HCHttpCallPerformAsync**.

### Obtener la configuración HTTP

Llame a **PFGetHttpSettings** para recuperar la configuración HTTP actual:

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

## Patrón de inicialización típico

En el ejemplo siguiente se muestra dónde encaja la configuración HTTP en el flujo general de inicialización del 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

- [PFHttpSettings](https://docs.xbox.com/es/services/playfab/api-references/c/pfhttpconfig/structs/pfhttpsettings.md)
- [Información general de la API de C de Services - PFHttpConfig.h](https://docs.xbox.com/es/services/playfab/api-references/c/pfhttpconfig/pfhttpconfig_members.md)
- [PFGetHttpSettings](https://docs.xbox.com/es/services/playfab/api-references/c/pfhttpconfig/functions/pfgethttpsettings.md)
- [PFSetHttpSettings](https://docs.xbox.com/es/services/playfab/api-references/c/pfhttpconfig/functions/pfsethttpsettings.md)
- [Página de redes](https://docs.xbox.com/es/tools/tools-console/devhome/devhome-networking.md)
