WinINet vs. WinHTTP

With a few exceptions, WinINet is a superset of WinHTTP. When you're choosing between the two, you should use WinINet unless you plan to run within a service or service-like process that requires impersonation and session isolation.

Comparison of features

Feature WinINet WinHTTP
Credential cache. Allows all built-in applications in Windows Internet Explorer to get credentials automatically. It also allows an application running outside of Internet Explorer to prompt/specify the credentials for the server only once. From then on the requests are automatic. yes no
Credential prompting. Provides an API that allows the calling code to prompt the user for credentials. yes no
FTP yes no
Autodial/RAS support. This is legacy functionality. Use Remote Access instead. yes no
Zones. Automatic integration with Internet Explorer security zones. yes no
IDNA support. Integrated support for the IDNA RFC/Punycode. yes yes
Cookie Jar APIs. Persistent and non-persistent cookies are supported. Any application or script can use this to see the same cookies as the browser. yes no
Protected mode IE support yes no
Decompression support. Support for gzip and deflate compression scheme. yes yes
Chunked upload support. Client code must perform the chunking. no yes
SOCKS4 (SOCKS version 4) support. Doesn't include v4a. yes no
SOCKS5 (SOCKS version 5) support no no
Bidirectional send and receive no no
Overlapped I/O no no
File scheme support. Useful for proxy scripts with a file scheme. yes no
InternetOpenUrl. Simplified code to open a URL. yes no
Services support. Can be run from a service or a service account. no yes
Session isolation. Separate sessions do not impact each other. no yes
Impersonation. Supports being called while the thread is impersonating a different user. no yes