APIs comuns para títulos do GDK
As APIs a seguir são comumente usadas para solicitações da Web seguras e robustas em títulos do Microsoft Game Development Kit (GDK). Elas também ajudam a simplificar a implementação.
Serviços HTTP do Windows (WinHTTP)
O WinHTTP também pode ser usado para criar pontos de extremidade de serviço HTTP e WebSocket em PCs e consoles XBOX sem alterações de código. Como essa API não trata automaticamente todas as práticas recomendadas de segurança, leia a Visão geral da segurança da comunicação (artigo sob NDA) e a Visão geral do WinHTTP para saber como garantir que sua implementação seja segura e robusta.
O
xCurl trata as práticas recomendadas de segurança, incluindo a validação da cadeia de certificados e as verificações de conectividade de rede. Ele também gerencia automaticamente a inicialização da rede e a suspensão/retomada.
Se o seu título usar o WinHTTP ou outra pilha HTTP em vez do xCurl, considere que o título é responsável pelo trabalho de integração com a plataforma, como a inicialização da rede, o tratamento de suspensão/retomada e a configuração de segurança explícita. Para obter diretrizes sobre sequenciamento e ciclo de vida, consulte Inicialização e conectividade de rede e Visão geral do WinHTTP.
Para fluxos de trabalho de depuração baseados em proxy no XBOX, comece com Fiddler em consoles XBOX One. Se o seu título usar uma pilha personalizada, consulte Depuração de pilhas HTTP personalizadas para obter diretrizes sobre proxy e certificados específicas do XBOX.
xCurl
O xCurl é uma API HTTP disponível para títulos do Microsoft Game Development Kit (GDK). Ele simplifica o desenvolvimento de títulos ao seguir automaticamente todas as práticas recomendadas de segurança. Como a superfície da API corresponde amplamente à libCurl, ele também oferece toda a flexibilidade e o conjunto de recursos HTTP da libCurl. Para saber mais sobre a API xCurl e as diferenças entre o xCurl e a libCurl, consulte a Visão geral do xCurl.XSAPI
A XBOX Services API (XSAPI) fornece um wrapper REST genérico para títulos do Microsoft Game Development Kit (GDK). Esse wrapper é simples de usar e segue o modelo de API assíncrona do Microsoft Game Development Kit (GDK). Se o seu título só precisar fazer solicitações HTTP REST, essa provavelmente será a interface mais simples de usar.- Use XblHttpCallCreate para criar um identificador HTTP para acompanhar sua solicitação
REST. - Preencha o corpo e qualquer configuração adicional com uma das funções
XblHttpCallRequestSet*. - Chame XblHttpCallPerformAsync para fazer a solicitação.
- Para recuperar a resposta, use uma das funções
XblHttpCallGet*. - Feche o identificador usando XblHttpCallCloseHandle.
XblHttpCallRequestSet* e XblHttpCallGet* representam grupos de funções para criar solicitações HTTP e recuperar respostas HTTP.- XblHttpCallRequestSetHeader
- XblHttpCallRequestSetLongHttpCall
- XblHttpCallRequestSetRequestBodyBytes
- XblHttpCallRequestSetRequestBodyString
- XblHttpCallRequestSetRetryAllowed
- XblHttpCallRequestSetRetryCacheId
- XblHttpCallGetHeader
- XblHttpCallGetHeaderAtIndex
- XblHttpCallGetNetworkErrorCode
- XblHttpCallGetNumHeaders
- XblHttpCallGetPlatformNetworkErrorMessage
- XblHttpCallGetRequestUrl
- XblHttpCallGetResponseBodyBytes
- XblHttpCallGetResponseBodyBytesSize
- XblHttpCallGetResponseString
- XblHttpCallGetStatusCode
libHttpClient
A libHttpClient foi projetada para permitir a comunicação bidirecional. Ela é uma camada de abstração projetada para uso pela XBOX Live Service API (XSAPI) para habilitar pontos de extremidade de serviço HTTP e WebSocket. A API está no Game Development Kit (GDK) como parte da XSAPI.Suspensão e retomada com a libHttpClient
Ao contrário do xCurl, alibHttpClient não drena nem encerra automaticamente o trabalho em andamento quando o título é suspenso. Os títulos que usam a libHttpClient (incluindo seu suporte a WebSocket) devem tratar o ciclo de vida de suspensão/retomada explicitamente. Os consoles de varejo entram em suspensão no modo de espera, portanto, uma conexão WebSocket ou uma operação assíncrona deixada aberta durante a suspensão pode travar ou falhar na retomada, mesmo quando o mesmo título é suspenso e retomado sem problemas em um kit de desenvolvimento.
Na suspensão ou no desligamento:
- Pare de enfileirar novos trabalhos HTTP e WebSocket.
- Cancele ou drene as solicitações em andamento e os envios e recebimentos de WebSocket.
- Feche as conexões WebSocket e destrua os identificadores de chamadas HTTP, as sessões e os soquetes que não devem sobreviver à suspensão.
XNetworkingConnectivityHint::networkInitialized seja true antes de recriar o estado da libHttpClient ou reabrir as conexões WebSocket.
Para conhecer as regras completas de sequenciamento e o raciocínio por trás delas, consulte Detectar o status de inicialização da rede e as diretrizes de ciclo de vida do jogo em Responder à suspensão e à retomada.
