API courantes pour les titres GDK
Les API suivantes sont couramment utilisées pour des requêtes web sécurisées et robustes dans les titres Microsoft Game Development Kit (GDK). Elles aident également à simplifier la mise en œuvre.
Windows HTTP Services (WinHTTP)
WinHTTP peut également être utilisé pour créer des points de terminaison de service HTTP et WebSocket sur les PC et les consoles XBOX sans modification du code. Comme cette API ne gère pas automatiquement toutes les meilleures pratiques de sécurité, assurez-vous de lire Vue d’ensemble de la sécurité des communications (article sous NDA) et Vue d’ensemble de WinHTTP pour savoir comment vous assurer que votre mise en œuvre est sécurisée et robuste.
xCurl gère les meilleures pratiques de sécurité, y compris la validation de la chaîne de certificats et les vérifications de connectivité réseau. Il gère également automatiquement l’initialisation du réseau ainsi que la suspension et la reprise.
Si votre titre utilise WinHTTP ou une autre pile HTTP au lieu de xCurl, considérez que le titre est responsable du travail d’intégration à la plateforme, comme l’initialisation du réseau, la gestion de la suspension et de la reprise, et la configuration de sécurité explicite. Pour des conseils sur le séquencement et le cycle de vie, consultez Initialisation et connectivité du réseau et Vue d’ensemble de WinHTTP.
Pour les flux de travail de débogage basés sur un proxy sur XBOX, commencez par Fiddler sur les consoles XBOX One. Si votre titre utilise une pile personnalisée, consultez Débogage des piles HTTP personnalisées pour des conseils sur les proxys et les certificats propres à XBOX.
xCurl
xCurl est une API HTTP disponible pour les titres Microsoft Game Development Kit (GDK). Elle simplifie le développement de titres en respectant automatiquement toutes les meilleures pratiques de sécurité. Comme la surface d’API correspond largement à libCurl, elle offre également toute la flexibilité et l’ensemble des fonctionnalités HTTP de libCurl. Pour en savoir plus sur l’API xCurl et sur les différences entre xCurl et libCurl, consultez Vue d’ensemble de xCurl.XSAPI
XBOX Services API (XSAPI) fournit un wrapper REST générique pour les titres Microsoft Game Development Kit (GDK). Ce wrapper est simple à utiliser et suit le modèle d’API asynchrone du Microsoft Game Development Kit (GDK). Si votre titre n’a besoin que d’effectuer des requêtes HTTP REST, il s’agit probablement de l’interface la plus simple à utiliser.- Utilisez XblHttpCallCreate pour créer un handle HTTP afin de suivre votre requête
REST. - Remplissez le corps et toute configuration supplémentaire avec l’une des fonctions
XblHttpCallRequestSet*. - Appelez XblHttpCallPerformAsync pour effectuer la requête.
- Pour récupérer la réponse, utilisez l’une des fonctions
XblHttpCallGet*. - Fermez le handle à l’aide de XblHttpCallCloseHandle.
XblHttpCallRequestSet* et XblHttpCallGet* représentent des groupes de fonctions permettant de construire des requêtes HTTP et de récupérer des réponses HTTP.- XblHttpCallRequestSetHeader
- XblHttpCallRequestSetLongHttpCall
- XblHttpCallRequestSetRequestBodyBytes
- XblHttpCallRequestSetRequestBodyString
- XblHttpCallRequestSetRetryAllowed
- XblHttpCallRequestSetRetryCacheId
- XblHttpCallGetHeader
- XblHttpCallGetHeaderAtIndex
- XblHttpCallGetNetworkErrorCode
- XblHttpCallGetNumHeaders
- XblHttpCallGetPlatformNetworkErrorMessage
- XblHttpCallGetRequestUrl
- XblHttpCallGetResponseBodyBytes
- XblHttpCallGetResponseBodyBytesSize
- XblHttpCallGetResponseString
- XblHttpCallGetStatusCode
libHttpClient
libHttpClient est conçu pour permettre une communication bidirectionnelle. Il s’agit d’une couche d’abstraction conçue pour être utilisée par XBOX Live Service API (XSAPI) afin de permettre des points de terminaison de service HTTP et WebSocket. L’API est incluse dans le Game Development Kit (GDK) dans le cadre de XSAPI.Suspension et reprise avec libHttpClient
Contrairement à xCurl,libHttpClient ne vide pas et ne démantèle pas automatiquement le travail en cours lorsque le titre est suspendu. Les titres qui utilisent libHttpClient (y compris sa prise en charge de WebSocket) doivent gérer explicitement le cycle de vie de suspension et de reprise. Les consoles commerciales passent en suspension en mode veille; une connexion WebSocket ou une opération asynchrone laissée ouverte pendant la suspension peut donc se bloquer ou planter à la reprise, même si le même titre se suspend et reprend correctement sur une trousse de développement.
Lors de la suspension ou de l’arrêt :
- Cessez de mettre en file d’attente de nouveaux travaux HTTP et WebSocket.
- Annulez ou videz les requêtes en cours ainsi que les envois et réceptions WebSocket.
- Fermez les connexions WebSocket et détruisez les handles d’appels HTTP, les sessions et les sockets qui ne doivent pas survivre à la suspension.
XNetworkingConnectivityHint::networkInitialized soit true avant de recréer l’état de libHttpClient ou de rouvrir les connexions WebSocket.
Pour connaître les règles complètes de séquencement et leur justification, consultez Détection de l’état d’initialisation du réseau et les conseils sur le cycle de vie du jeu dans Réponse à la suspension et à la reprise.
