Actually, it is based on the system.
And even though there is libcurl doing the exchange (APIs according to system) jobs. It is still system depended underneath.
If you don`t mind you can start with <winsock.h> and "ws_32.lib". Using the socket & callback function for http communications.
I used libcurl for a shortcut in work which lead to the uncertain memory leak in multi-thread. The solution is to make libcurl totally static or try its global_clean methods once in a while(kinda messy). My colleage clean this mass by rewrite http service from basic and avoid the thread application with changing the total structures of our program.
And both approaches take lots of time. One on learning the usage of libcurl APIs, the other on get acquintence with http protocal (those reply headers).