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

# Configuration HTTP

> Configurez les paramètres de nouvelle tentative HTTP, de délai d'expiration et de compression des réponses du SDK C PlayFab Services à l'aide de PFSetHttpRetrySettings et des API associées.

Le SDK PlayFab Services fournit des fonctions permettant de configurer la façon dont les requêtes HTTP sont effectuées, notamment le comportement de nouvelle tentative automatique et la compression des réponses. Ces paramètres sont globaux et s'appliquent à tous les appels d'API PlayFab effectués par le SDK.

Configurez les paramètres HTTP après avoir appelé [**PFInitialize**](/fr-CA/services/playfab/api-references/c/pfcore/functions/pfinitialize) et [**PFServicesInitialize**](/fr-CA/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize), mais avant d'effectuer le moindre appel d'API.

## Paramètres de nouvelle tentative

Le struct **PFHttpRetrySettings** contrôle la façon dont le SDK gère les échecs HTTP temporaires, tels que les erreurs de limitation (HTTP 429). Par défaut, le SDK relance automatiquement les requêtes ayant rencontré ces échecs, avec un délai d'attente progressif.

| Champ | Type | Valeur par défaut | Description |
| - | - | - | - |
| `allowRetry` | `bool` | `true` | Détermine si le SDK relance automatiquement certaines erreurs. Certaines erreurs ne sont jamais relancées et sont toujours retournées directement. |
| `minimumRetryDelayInSeconds` | `uint32_t` | 2 | Nombre minimal de secondes à attendre avant de relancer une requête ayant échoué. Ne peut pas être inférieur à 2 secondes. |
| `timeoutWindowInSeconds` | `uint32_t` | 20 | Nombre maximal de secondes pendant lesquelles le SDK effectue des nouvelles tentatives avant de retourner l'erreur à l'appelant. |

Pour plus d'informations sur les erreurs que le SDK relance automatiquement, consultez [Gérer les erreurs PlayFab](/fr-CA/services/playfab/sdks/c/errors).

### Définir les paramètres de nouvelle tentative

Appelez **PFSetHttpRetrySettings** pour personnaliser le comportement de nouvelle tentative. Par exemple, pour augmenter la fenêtre de nouvelle tentative des appels qui peuvent tolérer des attentes plus longues :

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

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

### Obtenir les paramètres de nouvelle tentative

Appelez **PFGetHttpRetrySettings** pour récupérer la configuration actuelle des nouvelles tentatives :

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

### Désactiver les nouvelles tentatives automatiques

Si vous souhaitez gérer vous-même toute la logique de nouvelle tentative, désactivez les nouvelles tentatives automatiques :

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

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

## Paramètres HTTP

Le struct **PFHttpSettings** contrôle le comportement HTTP général de toutes les requêtes du SDK.

| Champ | Type | Valeur par défaut | Description |
| - | - | - | - |
| `requestResponseCompression` | `bool` | `false` | Lorsque ce paramètre est activé, le SDK demande que les réponses de l'API soient compressées au format gzip en définissant l'en-tête `Accept-Encoding` sur `application/gzip`. |

### Activer la compression des réponses

L'activation de la compression des réponses peut réduire l'utilisation de la bande passante, ce qui est utile pour les appels qui retournent des charges utiles volumineuses. Appelez **PFSetHttpSettings** pour l'activer :

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

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

<Note>
  Pour décompresser une réponse compressée, **HCHttpCallResponseSetGzipCompressed** doit être appelé avant **HCHttpCallPerformAsync**.
</Note>

### Obtenir les paramètres HTTP

Appelez **PFGetHttpSettings** pour récupérer la configuration HTTP actuelle :

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

## Modèle d'initialisation type

L'exemple suivant montre où s'insère la configuration HTTP dans le flux global d'initialisation du 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](/fr-CA/services/playfab/api-references/c/pfhttpconfig/structs/pfhttpsettings.md)
- [HCHttpCallCreate](/fr-CA/reference/live/httpclient/httpclient/functions/hchttpcallcreate.md)
- [PFSetHttpSettings](/fr-CA/services/playfab/api-references/c/pfhttpconfig/functions/pfsethttpsettings.md)
- [PFHttpRetrySettings](/fr-CA/services/playfab/api-references/c/pfhttpconfig/structs/pfhttpretrysettings.md)
- [PFGetHttpSettings](/fr-CA/services/playfab/api-references/c/pfhttpconfig/functions/pfgethttpsettings.md)
