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

# Solicitações da Web HTTP e WebSocket no GDK

> Escolha entre xCurl, libHttpClient e WinHTTP para chamadas HTTP e WebSocket em títulos do GDK e trate a suspensão e a retomada corretamente no console.

Este artigo fornece uma visão geral das solicitações da Web HTTP (Hypertext Transfer Protocol) e WebSocket para títulos do Microsoft Game Development Kit (GDK).

Começar com o conjunto de APIs certo facilita a implementação de solicitações da Web seguras e robustas.

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

| Caso de uso | Escolha de API comum |
| - | - |
| Solicitações REST com APIs no estilo Gaming Runtime Services (GRTS) | [Microsoft XBOX Live Service API (XSAPI)](#xsapi) |
| Solicitações HTTP de uso geral | [xCurl](#xcurl) |
| Solicitações WebSocket | [libHttpClient](#libhttpclient) |

**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)](/pt-BR/build/game-principles/security/communication-security-overview) e a [Visão geral do WinHTTP](/pt-BR/build/console-features/networking/web-requests/intro-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](/pt-BR/build/console-features/networking/initialization-connectivity-networking) e [Visão geral do WinHTTP](/pt-BR/build/console-features/networking/web-requests/intro-winhttp).

Para fluxos de trabalho de depuração baseados em proxy no XBOX, comece com [Fiddler em consoles XBOX One](/pt-BR/build/console-features/networking/tools/fiddler-setup-networking). Se o seu título usar uma pilha personalizada, consulte [Depuração de pilhas HTTP personalizadas](/pt-BR/build/console-features/networking/web-requests/debugging-custom-http-stacks) 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](https://curl.haxx.se/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](/pt-BR/build/console-features/networking/web-requests/intro-xcurl).

## XSAPI

A [XBOX Services API (XSAPI)](https://developer.microsoft.com/games/xbox/docs/gdk/atoc-xsapi-c) 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.

1. Use [XblHttpCallCreate](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallcreate) para criar um identificador HTTP para acompanhar sua solicitação `REST`.
2. Preencha o corpo e qualquer configuração adicional com uma das funções `XblHttpCallRequestSet*`.
3. Chame [XblHttpCallPerformAsync](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallperformasync) para fazer a solicitação.
4. Para recuperar a resposta, use uma das funções `XblHttpCallGet*`.
5. Feche o identificador usando [XblHttpCallCloseHandle](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallclosehandle).

<Note>
  `XblHttpCallRequestSet*` e `XblHttpCallGet*` representam grupos de funções para criar solicitações HTTP e recuperar respostas HTTP.

  * [XblHttpCallRequestSetHeader](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallrequestsetheader)

  * [XblHttpCallRequestSetLongHttpCall](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallrequestsetlonghttpcall)

  * [XblHttpCallRequestSetRequestBodyBytes](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallrequestsetrequestbodybytes)

  * [XblHttpCallRequestSetRequestBodyString](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallrequestsetrequestbodystring)

  * [XblHttpCallRequestSetRetryAllowed](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallrequestsetretryallowed)

  * [XblHttpCallRequestSetRetryCacheId](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallrequestsetretrycacheid)

  * [XblHttpCallGetHeader](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetheader)

  * [XblHttpCallGetHeaderAtIndex](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetheaderatindex)

  * [XblHttpCallGetNetworkErrorCode](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetnetworkerrorcode)

  * [XblHttpCallGetNumHeaders](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetnumheaders)

  * [XblHttpCallGetPlatformNetworkErrorMessage](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetplatformnetworkerrormessage)

  * [XblHttpCallGetRequestUrl](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetrequesturl)

  * [XblHttpCallGetResponseBodyBytes](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetresponsebodybytes)

  * [XblHttpCallGetResponseBodyBytesSize](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetresponsebodybytessize)

  * [XblHttpCallGetResponseString](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetresponsestring)

  * [XblHttpCallGetStatusCode](/pt-BR/reference/live/xsapi-c/http_call_c/functions/xblhttpcallgetstatuscode)
</Note>

## libHttpClient

A [libHttpClient](https://github.com/Microsoft/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, a `libHttpClient` 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.

Na retomada, aguarde até que `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](/pt-BR/build/console-features/networking/initialization-connectivity-networking) e as diretrizes de ciclo de vida do jogo em [Responder à suspensão e à retomada](/pt-BR/build/console-features/console-workflows/xbox-game-life-cycle#responding-to-suspend-and-resume).

## Confira também

[Serviços HTTP do Windows (WinHTTP)](https://learn.microsoft.com/windows/desktop/winhttp/winhttp-start-page)

[libCurl](https://curl.haxx.se/libcurl/)

[Configurar serviços Web no Partner Center (artigo sob NDA)](/pt-BR/services/xbox-services/fundamentals/s2s-auth-calls/custom-service-config/web-services/live-web-services)

[Fiddler em consoles XBOX One](/pt-BR/build/console-features/networking/tools/fiddler-setup-networking)

[Visão geral da segurança da comunicação (artigo sob NDA)](/pt-BR/build/game-principles/security/communication-security-overview)


## Related topics

- [HTTP and WebSocket web requests in the GDK](/build/console-features/networking/web-requests/http-networking.md)
- [HCWebSocketCreate](/reference/live/httpclient/httpclient/functions/hcwebsocketcreate.md)
- [HCWebSocketSetProxyDecryptsHttps](/es/reference/live/httpclient/httpclient/functions/hcwebsocketsetproxydecryptshttps.md)
- [HCGetWebSocketFunctions](/reference/live/httpclient/httpprovider/functions/hcgetwebsocketfunctions.md)
- [HCWebSocketDisconnect](/reference/live/httpclient/httpclient/functions/hcwebsocketdisconnect.md)
