Search code examples
delphiindydotnet-httpclientidhttp

Delphi: TIdHTTP vs TNetHTTPClient


I'm writing a download manager in Delphi with some custom features like resumable downloads and downloading through proxies.

I'm studing different component solutions: Indy and NetHTTP, both seem very close.

  • TNetHTTPClient seem to be an interface of winhttp.dll.

  • TIdHTTP seem to be an interface of wininet.dll (but i'm not sure).

  • TIdHTTP seems like a very old component (maybe very stable/tested) and has tons of documentation online.

  • TNetHTTPClient seems to be a very recent component, and doesn't have good documentation online.

I'm a bit undecided... which one to choose?

The point is: what is the main difference between these two components?

My question is a bit disputable (primarily opinion-based), but I haven't found any practical comparison between these two components.


Solution

  • Indy DOES NOT use WinInet/WinHTTP at all. It uses cross-platform BSD/POSIX based socket APIs directly (like WinSock on Windows), implementing Internet protocols (like HTTP) completely from scratch.

    TIdHTTP is a manual HTTP implementation.

    TNetHTTPClient, on the other hand, wraps system-provided HTTP APIs instead (like WinInet/WinHTTP on Windows).