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

# GDK 與 XDK 之間的 Web 要求差異

> Microsoft Game Development Kit 與 XBOX One Software Development Kit 之間 Web 要求的差異

本文說明 Microsoft Game Development Kit (GDK) 與 XBOX One Software Development Kit 之間 Web 要求 API 的差異。`WinHttp` 是新的 Win32 HTTP API，可取代 `IXMLHttpRequest2` (IXHR2) 和 `IMessageWebSocket` API。`WinHttp` 是比 IXHR2 更低階的 API，因此與 IXHR2 相比缺少一些功能，例如內容快取、Cookie、自動插入 XBOX services 權杖，以及自動強制執行安全性。相對地，`WinHttp` 因為在處理程序內執行、額外負荷較少，並且避免過多的記憶體複製，所以效能更高。此外，`WinHttp` 在單一 API 中同時支援 HTTP/1.1、HTTP/2 和 WebSockets，並包含 IXHR2 所缺少的功能，例如區塊上傳。

`XCurl` 是適用於 Microsoft Game Development Kit (GDK) 的 HTTP API。`XCurl` 透過 `WinHttp` 之上的配接器提供更簡單的 API。`XCurl` API 介面大致與 [libCurl](https://curl.haxx.se/libcurl/) 相符。`XCurl` 會自動處理安全性最佳做法及網路初始化，藉此簡化遊戲開發。

除了 `WinHttp` 之外，XBOX Services API (`XSAPI`) 還提供簡單的 [http\_call](/zh-TW/reference/live/xsapi-c/http_call_c/http_call_c_members) API 集合，可供您用來對自己的自訂伺服器發出 REST HTTP 要求。我們建議對遊戲向您自己的服務及 XBOX services 發出的任何 REST 要求使用 `XSAPI`。
如需 `XSAPI` 的詳細資訊，請參閱[開始使用 XBOX Services API](/zh-TW/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis)。

GDK 包含一個 [SimpleWinHttp 範例](https://aka.ms/gdkdl)，可將 WinHTTP 的使用方式抽象化為簡單的 Microsoft Game Development Kit (GDK) 非同步模型。我們建議您以此範例作為自己 WinHTTP 實作的起點，因為它涵蓋了建置安全且穩固的 WinHTTP 整合所涉及的許多細節。

如需如何使用 `XCurl` 或 `WinHttp` 的詳細資訊，請參閱 [HTTP 和 Web 通訊端](/zh-TW/build/console-features/networking/web-requests/http-networking)。

## 網路初始化

您的遊戲會在 Game OS 啟動過程中盡早啟動。您可以開始從硬碟載入資產，並開始初始化圖形堆疊。不過，您的程式碼會在網路服務啟動之前就開始執行，因此會有一段期間無法安全地使用 Win32 網路 API。我們將這段期間定義為*網路初始化*期間，在此之後，網路才會被視為已初始化。網路初始化通常需要幾秒鐘，這在您的程式碼中可能會很明顯。

XBOX One ERA 遊戲的網路初始化會隱含且任意地讓原本具即時安全性的網路 API (例如 `WSAStartup` 或 `bind`) 停滯。在 Microsoft Game Development Kit (GDK) 應用程式中，網路初始化現在是一個明確的概念，您必須與之互動，才能使用任何 Win32 網路或安全性 API。

Microsoft Game Development Kit (GDK) 遊戲必須等到 `XNetworkingConnectivityHint::networkInitialized` 布林值設為 `true` 後，才能呼叫 `Winsock`、`WinHttp`、`IP Helper`、`BCrypt`、`WinCrypt`、`Schannel` 中的任何網路 API，或任何其他 Win32 網路 API。在網路初始化之前呼叫這些 API 中的任何一個，都會導致不確定的行為，甚至可能導致處理程序隨機當機。

此外，相同的概念也適用於所有暫停/繼續循環。暫停時，Microsoft Game Development Kit (GDK) 遊戲應關閉所有網路和安全性控制代碼。接著，從網路的角度來看，Microsoft Game Development Kit (GDK) 遊戲應將繼續處理常式視同遊戲初次啟動，並再次等待網路完成初始化。

如需詳細資訊 (包括示範如何等待網路初始化的程式碼範例)，請參閱[網路初始化和連線能力](/zh-TW/build/console-features/networking/initialization-connectivity-networking)。

## 另請參閱

[網路初始化和連線能力](/zh-TW/build/console-features/networking/initialization-connectivity-networking)

[通訊安全性概觀](/zh-TW/build/game-principles/security/communication-security-overview)

[開始使用 XBOX Services API](/zh-TW/services/xbox-services/fundamentals/xbox-services-api/live-gs-xbl-apis)

[http\_call\_c](/zh-TW/reference/live/xsapi-c/http_call_c/http_call_c_members)


## Related topics

- [GDK 与 XDK 之间的 Web 请求差异](/zh-CN/build/console-features/networking/xdk-migration/xdk-migration-web-requests-networking.md)
- [認證付費服務方案](/zh-TW/publishing/game-publishing/concepts/certification/certification-paid-services.md)
- [将 XDK 网络迁移到 XBOX GDK](/zh-CN/build/console-features/networking/xdk-migration/index.md)
- [PlayFab Party 版本資訊](/zh-TW/services/playfab/multiplayer/networking/release-notes.md)
- [XR-013 將 Microsoft 帳戶與發行者帳戶連結](/zh-TW/publishing/certification/xr/xr-013.md)
