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

# HTTP 구성

> PFSetHttpRetrySettings 및 관련 API를 사용해 PlayFab Services C SDK의 HTTP 재시도, 시간 초과, 응답 압축 설정을 구성합니다.

PlayFab Services SDK는 자동 재시도 동작 및 응답 압축을 포함하여 HTTP 요청 방식을 구성하기 위한 함수를 제공합니다. 이 설정은 전역적이며 SDK가 수행하는 모든 PlayFab API 호출에 적용됩니다.

HTTP 설정은 [**PFInitialize**](/services/playfab/api-references/c/pfcore/functions/pfinitialize) 및 [**PFServicesInitialize**](/services/playfab/api-references/c/pfservices/functions/pfservicesinitialize)를 호출한 후, 그러나 API 호출을 하기 전에 구성하세요.

## 재시도 설정

**PFHttpRetrySettings** 구조체는 SDK가 스로틀링 오류(HTTP 429)와 같은 일시적인 HTTP 실패를 처리하는 방법을 제어합니다. 기본적으로 SDK는 백오프와 함께 이러한 실패를 자동으로 재시도합니다.

| 필드                           | 유형         | 기본값    | 설명                                                              |
| ---------------------------- | ---------- | ------ | --------------------------------------------------------------- |
| `allowRetry`                 | `bool`     | `true` | SDK가 선택된 오류를 자동으로 재시도할지 여부를 제어합니다. 일부 오류는 재시도되지 않고 항상 직접 반환됩니다. |
| `minimumRetryDelayInSeconds` | `uint32_t` | 2      | 실패한 요청을 재시도하기 전에 대기할 최소 초 수입니다. 2초 미만으로 설정할 수 없습니다.             |
| `timeoutWindowInSeconds`     | `uint32_t` | 20     | SDK가 오류를 호출자에게 반환하기 전에 재시도를 시도하는 최대 초 수입니다.                     |

SDK가 자동으로 재시도하는 오류에 대한 자세한 내용은 [PlayFab 오류 처리](/services/playfab/sdks/c/errors)를 참조하세요.

### 재시도 설정 지정

재시도 동작을 사용자 지정하려면 **PFSetHttpRetrySettings**를 호출합니다. 예를 들어, 더 긴 대기를 허용할 수 있는 호출에 대해 재시도 창을 늘리려면:

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

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

### 재시도 설정 가져오기

현재 재시도 구성을 검색하려면 **PFGetHttpRetrySettings**를 호출합니다:

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

### 자동 재시도 비활성화

모든 재시도 로직을 직접 처리하려면 자동 재시도를 비활성화합니다:

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

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

## HTTP 설정

**PFHttpSettings** 구조체는 모든 SDK 요청에 대한 일반 HTTP 동작을 제어합니다.

| 필드                           | 유형     | 기본값     | 설명                                                                                   |
| ---------------------------- | ------ | ------- | ------------------------------------------------------------------------------------ |
| `requestResponseCompression` | `bool` | `false` | 활성화되면 SDK는 `Accept-Encoding` 헤더를 `application/gzip`으로 설정하여 API 응답을 gzip 압축하도록 요청합니다. |

### 응답 압축 활성화

응답 압축을 활성화하면 대역폭 사용량을 줄일 수 있으며, 이는 큰 페이로드를 반환하는 호출에 유용합니다. 활성화하려면 **PFSetHttpSettings**를 호출합니다:

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

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

<Note>
  압축된 응답의 압축을 해제하려면 **HCHttpCallPerformAsync**를 호출하기 전에 **HCHttpCallResponseSetGzipCompressed**를 호출해야 합니다.
</Note>

### HTTP 설정 가져오기

현재 HTTP 구성을 검색하려면 **PFGetHttpSettings**를 호출합니다:

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

## 일반적인 초기화 패턴

다음 예제는 전체 SDK 초기화 흐름에서 HTTP 구성이 어느 지점에 위치하는지 보여줍니다:

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

- [구성](/ko/services/xbox-services/player-data/stats-leaderboards/featured-stats/config/index.md)
- [HCHttpDisableAssertsForSSLValidationInDevSandboxes](/ko/reference/live/httpclient/httpclient/functions/hchttpdisableassertsforsslvalidationindevsandboxes.md)
- [게임의 속성 구성](/ko/publishing/game-publishing/tutorial-xbox-managed/how-to-configure-properties.md)
- [게임의 Store 목록 구성](/ko/publishing/game-publishing/tutorial-xbox-managed/how-to-create-a-store-listing.md)
- [콘텐츠 테스트 애플리케이션(CTA) 스트림 구성 개요](/ko/build/core-features/common/game-streaming/game-streaming-content-test-application-stream-config.md)
