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

# 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**](/services/playfab/api-references/c/pfcore/functions/pfinitialize) y [**PFServicesInitialize**](/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize), 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](/services/playfab/sdks/c/errors).

### 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**.
</Note>

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

- [Página de redes](/es/tools/tools-console/devhome/devhome-networking.md)
- [Configuración](/es/services/xbox-services/player-data/stats-leaderboards/featured-stats/config/index.md)
- [URI de configuración desatendida](/es/reference/deviceportal/unattendedsetup/atoc-rest-unattendedsetup.md)
- [Depuración de pilas HTTP personalizadas](/es/build/console-features/networking/web-requests/debugging-custom-http-stacks.md)
- [HCHttpDisableAssertsForSSLValidationInDevSandboxes](/es/reference/live/httpclient/httpclient/functions/hchttpdisableassertsforsslvalidationindevsandboxes.md)
