Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com algumas exceções, WinINet é um superconjunto de WinHTTP. Ao escolher entre os dois, você deve usar o WinINet a menos que planeje executá-lo em um serviço ou processo semelhante a um serviço que exija impersonação e isolamento de sessão.
Comparação de recursos
| Característica | WinINet | WinHTTP |
|---|---|---|
| cache de credenciais. Permite que todos os aplicativos internos no Windows Internet Explorer obtenham credenciais automaticamente. Ele também permite que um aplicativo em execução fora do Internet Explorer solicite/especifique as credenciais para o servidor apenas uma vez. A partir daí, as solicitações são automáticas. | Sim | Não |
| solicitação de credencial. Fornece uma API que permite que o código de chamada solicite credenciais ao usuário. | Sim | Não |
| FTP | Sim | Não |
| Suporte a Autodial/RAS. Essa é uma funcionalidade herdada. Use Acesso Remoto em vez disso. | Sim | Não |
| Zonas. Integração automática com zonas de segurança do Internet Explorer. | Sim | Não |
| suporte à IDNA. Suporte integrado para a IDNA RFC/Punycode. | Sim | Sim |
| APIs do armazenamento de cookies. Há suporte para cookies persistentes e não persistentes. Qualquer aplicativo ou script pode usá-lo para ver os mesmos cookies que o navegador. | Sim | Não |
| Suporte ao IE em modo protegido | Sim | Não |
| suporte à descompactação. Suporte para os algoritmos de compressão gzip e deflate. | Sim | Sim |
| Suporte a upload fragmentado. O código do cliente deve realizar a fragmentação. | Não | Sim |
| suporte a SOCKS4 (SOCKS versão 4). Não inclui v4a. | Sim | Não |
| Suporte a SOCKS5 (SOCKS versão 5) | Não | Não |
| envio e recebimento bidirecional | Não | Não |
| E/S sobreposta | Não | Não |
| Suporte ao esquema de arquivo. Útil para scripts de proxy com um esquema de arquivo. | Sim | Não |
| InternetOpenUrl. Código simplificado para abrir uma URL. | Sim | Não |
| Suporte a serviços. Pode ser executado em um serviço ou em uma conta de serviço. | Não | Sim |
| isolamento de sessão. Sessões separadas não afetam umas às outras. | Não | Sim |
| Representação. Tem suporte para ser chamado enquanto o thread estiver representando um usuário diferente. | Não | Sim |
Tópicos relacionados
Guia de decisão rápida
Use esse fluxograma para selecionar a pilha de clientes HTTP correta:
-
Seu código está sendo executado em um serviço do Windows, processo do sistema ou sob representação?
- Sim, → usar WinHTTP.
-
Seu código é um aplicativo da área de trabalho que precisa das configurações de proxy, cookies ou solicitações de credencial do usuário no IE (Opções da Internet) ?
- Sim, → usar WinINet.
-
Você está desenvolvendo um aplicativo moderno para desktop em C++ ou um aplicativo UWP/WinUI?
- Sim → usar Windows.Web.Http (C++/WinRT via namespace Windows.Web.Http).
-
Você está escrevendo um aplicativo .NET?
- Sim, → usar System.Net.Http.HttpClient.
-
Você precisa de compatibilidade entre plataformas?
- Sim → usar libcurl ou uma biblioteca portátil semelhante.
Note
Quando usar nem WinINet nem WinHTTP — se você estiver criando um novo aplicativo e não exigir integração herdada do Win32, prefira as alternativas modernas listadas acima. Eles oferecem APIs mais simples e melhor suporte assíncrono. Algumas alternativas também oferecem benefícios adicionais: libcurl e .NET HttpClient são multiplataforma; A disponibilidade do TLS 1.3 depende da pilha TLS subjacente e da configuração do sistema operacional. Reserve WinHTTP/WinINet para cenários que exigem especificamente suporte ao serviço Win32, compartilhamento de credenciais do navegador ou integração profunda de proxy.
Importante
Lembrete de segurança – independentemente de qual pilha HTTP você escolher, nunca desabilite a validação do certificado TLS em produção. Tanto o WinHTTP quanto o WinINet permitem ignorar erros de certificado por meio de sinalizadores, mas isso expõe sua aplicação a ataques de intermediário.