GDK 遊戲的常用 API
下列 API 常用於 Microsoft Game Development Kit (GDK) 遊戲中安全且穩健的 Web 要求。它們也有助於簡化實作。
Windows HTTP 服務 (WinHTTP)
WinHTTP 也可用來在 PC 和 XBOX 主機上建立 HTTP 和 WebSocket 服務端點,而不需要變更程式碼。由於此 API 不會自動處理所有安全性最佳做法,請務必閱讀通訊安全性概觀 (NDA 文章) 和 WinHTTP 概觀,以了解如何確保您的實作安全且穩健。
xCurl 會處理安全性最佳做法,包括憑證鏈結驗證和網路連線檢查。它也會自動管理網路初始化和暫停/繼續。
如果您的遊戲使用 WinHTTP 或其他 HTTP 堆疊而非 xCurl,請假設遊戲需負責平台整合工作,例如網路初始化、暫停/繼續處理及明確的安全性設定。如需順序和生命週期指引,請參閱網路初始化與連線能力和 WinHTTP 概觀。
若要在 XBOX 上使用以 Proxy 為基礎的偵錯工作流程,請從 XBOX One 主機上的 Fiddler 開始。如果您的遊戲使用自訂堆疊,請參閱偵錯自訂 HTTP 堆疊,以取得 XBOX 專用的 Proxy 和憑證指引。
xCurl
xCurl 是 Microsoft Game Development Kit (GDK) 遊戲可用的 HTTP API。它會自動遵循所有安全性最佳做法,藉此簡化遊戲開發。由於 API 介面大致與 libCurl 相符,因此它也具備 libCurl 的完整彈性和 HTTP 功能集。 若要深入了解 xCurl API 以及 xCurl 與 libCurl 之間的差異,請參閱 xCurl 概觀。XSAPI
XBOX Services API (XSAPI) 為 Microsoft Game Development Kit (GDK) 遊戲提供通用的 REST 包裝函式。此包裝函式易於使用,並遵循 Microsoft Game Development Kit (GDK) 非同步 API 模型。如果您的遊戲只需要發出 REST HTTP 要求,這可能是最簡單的介面。- 使用 XblHttpCallCreate 建立 HTTP 控制代碼以追蹤您的
REST要求。 - 使用其中一個
XblHttpCallRequestSet*函式填入本文和任何額外設定。 - 呼叫 XblHttpCallPerformAsync 以發出要求。
- 若要擷取回應,請使用其中一個
XblHttpCallGet*函式。 - 使用 XblHttpCallCloseHandle 關閉控制代碼。
XblHttpCallRequestSet* 和 XblHttpCallGet* 代表用於建置 HTTP 要求和擷取 HTTP 回應的函式群組。- XblHttpCallRequestSetHeader
- XblHttpCallRequestSetLongHttpCall
- XblHttpCallRequestSetRequestBodyBytes
- XblHttpCallRequestSetRequestBodyString
- XblHttpCallRequestSetRetryAllowed
- XblHttpCallRequestSetRetryCacheId
- XblHttpCallGetHeader
- XblHttpCallGetHeaderAtIndex
- XblHttpCallGetNetworkErrorCode
- XblHttpCallGetNumHeaders
- XblHttpCallGetPlatformNetworkErrorMessage
- XblHttpCallGetRequestUrl
- XblHttpCallGetResponseBodyBytes
- XblHttpCallGetResponseBodyBytesSize
- XblHttpCallGetResponseString
- XblHttpCallGetStatusCode
libHttpClient
libHttpClient 的設計目的是啟用雙向通訊。它是一個抽象層,專供 XBOX Live Service API (XSAPI) 使用,以啟用 HTTP 和 WebSocket 服務端點。此 API 作為 XSAPI 的一部分包含在 Game Development Kit (GDK) 中。使用 libHttpClient 進行暫停和繼續
與 xCurl 不同,libHttpClient 不會在遊戲暫停時自動清空或終止進行中的工作。使用 libHttpClient (包括其 WebSocket 支援) 的遊戲必須明確處理暫停/繼續生命週期。零售版主機會在待命時進入暫停狀態,因此即使相同的遊戲在開發套件上能正常暫停和繼續,在暫停期間仍保持開啟的 WebSocket 連線或非同步作業也可能在繼續時停止回應或當機。
在暫停或關機時:
- 停止將新的 HTTP 和 WebSocket 工作排入佇列。
- 取消或清空進行中的要求,以及 WebSocket 傳送和接收。
- 關閉 WebSocket 連線,並終結不應在暫停後保留的 HTTP 呼叫控制代碼、工作階段和通訊端。
XNetworkingConnectivityHint::networkInitialized 為 true,再重新建立 libHttpClient 狀態或重新開啟 WebSocket 連線。
如需完整的順序規則及其背後的原因,請參閱偵測網路初始化狀態,以及回應暫停和繼續中的遊戲生命週期指引。
