Partilhar via


Sobre o WinHTTP

Observação

Para contêineres de aplicativos e serviços do sistema desde o Windows 10, versão 1709, HTTP/2 (consulte RFC7540) está ativado por padrão.

O Microsoft Windows HTTP Services (WinHTTP) fornece uma interface de alto nível com suporte de servidor para os protocolos de Internet HTTP/2 e 1.1. WinHTTP é projetado para ser usado principalmente em cenários baseados em servidor por aplicativos de servidor que se comunicam com servidores HTTP.

WinINet foi projetado como uma plataforma de cliente HTTP para aplicativos de desktop interativos. WinINet exibe uma interface de usuário para algumas operações, como a coleta de credenciais de usuário. WinHTTP, no entanto, lida com essas operações programaticamente. Os aplicativos de servidor que exigem serviços de cliente HTTP devem usar WinHTTP em vez de WinINet. Para obter mais informações, consulte Portando aplicativos WinINet para WinHTTP.

WinHTTP também é projetado para uso em serviços do sistema e aplicativos cliente baseados em HTTP. No entanto, aplicativos de usuário único que exigem funcionalidade de protocolo FTP, persistência de cookies, cache, manipulação automática de caixas de diálogo de credenciais, compatibilidade com o Internet Explorer ou suporte a plataforma de nível inferior devem considerar o uso do WinINet.

Essa interface é acessível a partir de C/C++ usando a interface de programação de aplicativo (API) WinHTTP ou usando o IWinHttpRequest e IWinHttpRequestEvents interfaces. WinHTTP também é acessível a partir de script e Microsoft Visual Basic através do objeto WinHTTP. Para obter mais informações e descrições das funções individuais, consulte a referência de funções WinHTTP para a linguagem específica.

A partir do Windows 8, o WinHTTP fornece APIs para habilitar conexões usando o WebSocket Protocoll, como WinHttpWebSocketSend e WinHttpWebSocketReceive.

Atenção

WinHTTP não é reentrante exceto durante uma chamada de retorno assíncrona de conclusão. Ou seja, enquanto um thread tem uma chamada pendente para uma das funções WinHTTP, como WinHttpSendRequest, WinHttpReceiveResponse, WinHttpQueryDataAvailable, WinHttpSendData ou WinHttpWriteData, ele nunca deve chamar WinHTTP uma segunda vez até que a primeira chamada seja concluída. Um cenário no qual uma segunda chamada pode ocorrer é o seguinte: Se um aplicativo enfileira uma Chamada de Procedimento Assíncrono (APC) para o thread que chama o WinHTTP, e se o WinHTTP executa uma espera alertável internamente, o APC pode ser executado. Se a rotina APC também chamar WinHTTP, ela reentra na API WinHTTP e o estado interno do WinHTTP pode ser corrompido.

Recursos do WinHTTP 5.1

Os seguintes recursos foram adicionados na versão 5.1 do WinHTTP:

  • Suporte a IPv6.
  • Recursos de AutoProxy.
  • Protocolo HTTP/1.0, incluindo suporte para conexões keep-alive (persistentes) e cookies de sessão.
  • Suporte para transferência em partes no HTTP/1.1 para respostas HTTP.
  • Agrupamento Keep-alive de conexões anônimas entre sessões.
  • Funcionalidade SSL (Secure Sockets Layer), incluindo certificados de cliente. Os protocolos SSL suportados incluem o seguinte: SSL 2.0, SSL 3.0 e Transport Layer Security (TLS) 1.0.
  • Suporte para autenticação de servidor e proxy, incluindo suporte integrado para Microsoft Passport 1.4 e o pacote de Kerberos Negotiate/.
  • Tratamento automático de redirecionamentos, a menos que seja suprimido.
  • Interface programável além da API.
  • Utilitário de rastreamento para ajudar a solucionar problemas.

Vários recursos WinINet não são suportados no WinHTTP, incluindo armazenamento em cache de URL e cookies persistentes, autoproxy, discagem automática, suporte offline e Protocolo de Transferência de Ficheiros (FTP).

Para obter mais informações sobre as alterações introduzidas na versão 5.1, consulte O que há de novo no WinHTTP 5.1.

Introdução ao WinHTTP

Para obter mais informações sobre WinHTTP, consulte os tópicos a seguir.