Git Product home page Git Product logo

httprequest's Introduction

HTTPRequest

HTTPRequest is a single-header C++ library for making HTTP requests. You can just include it in your project and use it. HTTPRequest was tested on macOS, Windows, Haiku, BSD, and GNU/Linux, but it should work on most of the Linux-based platforms. Supports IPv4 and IPv6. HTTPRequest requires C++17 or newer.

Usage

To use the library simply include HTTPRequest.hpp using #include "HTTPRequest.hpp".

Example of a GET request

try
{
    // you can pass http::InternetProtocol::V6 to Request to make an IPv6 request
    http::Request request{"http://test.com/test"};

    // send a get request
    const auto response = request.send("GET");
    std::cout << std::string{response.body.begin(), response.body.end()} << '\n'; // print the result
}
catch (const std::exception& e)
{
    std::cerr << "Request failed, error: " << e.what() << '\n';
}

Example of a POST request with form data

try
{
    http::Request request{"http://test.com/test"};
    const string body = "foo=1&bar=baz";
    const auto response = request.send("POST", body, {
        {"Content-Type", "application/x-www-form-urlencoded"}
    });
    std::cout << std::string{response.body.begin(), response.body.end()} << '\n'; // print the result
}
catch (const std::exception& e)
{
    std::cerr << "Request failed, error: " << e.what() << '\n';
}

Example of a POST request with a JSON body

try
{
    http::Request request{"http://test.com/test"};
    const std::string body = "{\"foo\": 1, \"bar\": \"baz\"}";
    const auto response = request.send("POST", body, {
        {"Content-Type", "application/json"}
    });
    std::cout << std::string{response.body.begin(), response.body.end()} << '\n'; // print the result
}
catch (const std::exception& e)
{
    std::cerr << "Request failed, error: " << e.what() << '\n';
}

Example of a GET request using Basic authorization

try
{
    http::Request request{"http://user:[email protected]/test"};
    const auto response = request.send("GET");
    std::cout << std::string{response.body.begin(), response.body.end()} << '\n'; // print the result
}
catch (const std::exception& e)
{
    std::cerr << "Request failed, error: " << e.what() << '\n';
}

To set a timeout for HTTP requests, pass std::chrono::duration as a last parameter to send(). A negative duration (default) passed to send() disables timeout.

License

HTTPRequest is released to the Public Domain.

httprequest's People

Contributors

6plosive avatar agriic avatar definisi avatar elnormous avatar entenkoeniq-old avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

httprequest's Issues

Tons of errors when including

Hi, so I just included the file in my project like this: #include "HTTPRequest.hpp", and I get all these errors during compilation:

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(457): message : voir la définition précédente de 'AF_IPX'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(147,1): warning C4005: 'AF_MAX' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(476): message : voir la définition précédente de 'AF_MAX'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(185,1): warning C4005: 'SO_DONTLINGER' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(399): message : voir la définition précédente de 'SO_DONTLINGER'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(238,25): error C2011: 'sockaddr' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1007): message : voir la déclaration de 'sockaddr'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(440,5): error C2143: erreur de syntaxe : absence de '}' avant 'constante'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(440,27): error C2059: erreur de syntaxe : 'constante'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,1): error C2143: erreur de syntaxe : absence de ';' avant '}'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,10): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,20): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(575,1): warning C4005: 'IN_CLASSA' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(284): message : voir la définition précédente de 'IN_CLASSA'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(581,1): warning C4005: 'IN_CLASSB' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(290): message : voir la définition précédente de 'IN_CLASSB'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(587,1): warning C4005: 'IN_CLASSC' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(296): message : voir la définition précédente de 'IN_CLASSC'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(598,1): warning C4005: 'INADDR_ANY' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(301): message : voir la définition précédente de 'INADDR_ANY'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(600,1): warning C4005: 'INADDR_BROADCAST' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(303): message : voir la définition précédente de 'INADDR_BROADCAST'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(636,28): error C2011: 'sockaddr_in' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1011): message : voir la déclaration de 'sockaddr_in'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(136,23): error C2011: 'fd_set' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1019): message : voir la déclaration de 'fd_set'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(156,1): warning C4005: 'FD_CLR' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(94): message : voir la définition précédente de 'FD_CLR'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(171,1): warning C4005: 'FD_SET' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(99): message : voir la définition précédente de 'FD_SET'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(180,16): error C2011: 'timeval' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1035): message : voir la déclaration de 'timeval'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(236,17): error C2011: 'hostent' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1023): message : voir la déclaration de 'hostent'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(249,16): error C2011: 'netent' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(177): message : voir la déclaration de 'netent'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(256,17): error C2011: 'servent' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1027): message : voir la déclaration de 'servent'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(268,18): error C2011: 'protoent' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1031): message : voir la déclaration de 'protoent'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(364,24): error C2011: 'WSAData' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(319): message : voir la déclaration de 'WSAData'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(462,18): error C2011: 'sockproto' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(491): message : voir la déclaration de 'sockproto'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(504,16): error C2011: 'linger' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1015): message : voir la déclaration de 'linger'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(517,1): warning C4005: 'SOMAXCONN' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(541): message : voir la définition précédente de 'SOMAXCONN'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(552,1): warning C4005: 'FD_READ' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(559): message : voir la définition précédente de 'FD_READ'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(555,1): warning C4005: 'FD_WRITE' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(560): message : voir la définition précédente de 'FD_WRITE'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(558,1): warning C4005: 'FD_OOB' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(561): message : voir la définition précédente de 'FD_OOB'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(561,1): warning C4005: 'FD_ACCEPT' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(562): message : voir la définition précédente de 'FD_ACCEPT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(564,1): warning C4005: 'FD_CONNECT' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(563): message : voir la définition précédente de 'FD_CONNECT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(567,1): warning C4005: 'FD_CLOSE' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(564): message : voir la définition précédente de 'FD_CLOSE'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1625,1): error C2375: 'accept' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(739): message : voir la déclaration de 'accept'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1647,1): error C2375: 'bind' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(744): message : voir la déclaration de 'bind'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1668,1): error C2375: 'closesocket' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(749): message : voir la déclaration de 'closesocket'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1685,1): error C2375: 'connect' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(751): message : voir la déclaration de 'connect'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1706,1): error C2375: 'ioctlsocket' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(756): message : voir la déclaration de 'ioctlsocket'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1729,1): error C2375: 'getpeername' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(761): message : voir la déclaration de 'getpeername'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1750,1): error C2375: 'getsockname' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(766): message : voir la déclaration de 'getsockname'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1771,1): error C2375: 'getsockopt' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(771): message : voir la déclaration de 'getsockopt'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1796,1): error C2375: 'htonl' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(778): message : voir la déclaration de 'htonl'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1813,1): error C2375: 'htons' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(780): message : voir la déclaration de 'htons'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1831,1): error C2375: 'inet_addr' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(782): message : voir la déclaration de 'inet_addr'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1849,1): error C2375: 'inet_ntoa' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(784): message : voir la déclaration de 'inet_ntoa'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1949,1): error C2375: 'listen' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(786): message : voir la déclaration de 'listen'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1968,1): error C2375: 'ntohl' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(790): message : voir la déclaration de 'ntohl'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(1985,1): error C2375: 'ntohs' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(792): message : voir la déclaration de 'ntohs'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2002,1): error C2375: 'recv' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(794): message : voir la déclaration de 'recv'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2025,1): error C2375: 'recvfrom' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(800): message : voir la déclaration de 'recvfrom'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2052,1): error C2375: 'select' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(808): message : voir la déclaration de 'select'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2077,1): error C2375: 'send' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(815): message : voir la déclaration de 'send'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2100,1): error C2375: 'sendto' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(821): message : voir la déclaration de 'sendto'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2127,1): error C2375: 'setsockopt' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(829): message : voir la déclaration de 'setsockopt'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2152,1): error C2375: 'shutdown' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(836): message : voir la déclaration de 'shutdown'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2172,1): error C2375: 'socket' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(840): message : voir la déclaration de 'socket'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2197,1): error C2375: 'gethostbyaddr' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(847): message : voir la déclaration de 'gethostbyaddr'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2219,1): error C2375: 'gethostbyname' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(852): message : voir la déclaration de 'gethostbyname'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2236,1): error C2375: 'gethostname' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(854): message : voir la déclaration de 'gethostname'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2276,1): error C2375: 'getservbyport' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(858): message : voir la déclaration de 'getservbyport'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2295,1): error C2375: 'getservbyname' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(862): message : voir la déclaration de 'getservbyname'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2314,1): error C2375: 'getprotobynumber' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(866): message : voir la déclaration de 'getprotobynumber'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2331,1): error C2375: 'getprotobyname' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(868): message : voir la déclaration de 'getprotobyname'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2351,1): error C2375: 'WSAStartup' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(872): message : voir la déclaration de 'WSAStartup'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2371,1): error C2375: 'WSACleanup' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(876): message : voir la déclaration de 'WSACleanup'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2388,1): error C2375: 'WSASetLastError' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(878): message : voir la déclaration de 'WSASetLastError'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2405,1): error C2375: 'WSAGetLastError' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(880): message : voir la déclaration de 'WSAGetLastError'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2426,1): error C2375: 'WSAIsBlocking' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(882): message : voir la déclaration de 'WSAIsBlocking'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2444,1): error C2375: 'WSAUnhookBlockingHook' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(884): message : voir la déclaration de 'WSAUnhookBlockingHook'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2462,1): error C2375: 'WSASetBlockingHook' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(886): message : voir la déclaration de 'WSASetBlockingHook'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2480,1): error C2375: 'WSACancelBlockingCall' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(888): message : voir la déclaration de 'WSACancelBlockingCall'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2498,1): error C2375: 'WSAAsyncGetServByName' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(890): message : voir la déclaration de 'WSAAsyncGetServByName'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2526,1): error C2375: 'WSAAsyncGetServByPort' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(898): message : voir la déclaration de 'WSAAsyncGetServByPort'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2554,1): error C2375: 'WSAAsyncGetProtoByName' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(906): message : voir la déclaration de 'WSAAsyncGetProtoByName'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2580,1): error C2375: 'WSAAsyncGetProtoByNumber' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(913): message : voir la déclaration de 'WSAAsyncGetProtoByNumber'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2606,1): error C2375: 'WSAAsyncGetHostByName' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(920): message : voir la déclaration de 'WSAAsyncGetHostByName'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2632,1): error C2375: 'WSAAsyncGetHostByAddr' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(927): message : voir la déclaration de 'WSAAsyncGetHostByAddr'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2662,1): error C2375: 'WSACancelAsyncRequest' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(936): message : voir la déclaration de 'WSACancelAsyncRequest'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(2680,1): error C2375: 'WSAAsyncSelect' : redéfinition ; liaison différente
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(938): message : voir la déclaration de 'WSAAsyncSelect'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(4206,1): error C2059: erreur de syntaxe : '}'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock2.h(4206,1): error C2143: erreur de syntaxe : absence de ';' avant '}'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(42,12): error C2143: erreur de syntaxe : absence de ';' avant '{'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(42,12): error C2447: '{' : en-tête de fonction manquant (liste formelle à l'ancien format ?)
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(135,1): warning C4005: 'IP_TOS' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(349): message : voir la définition précédente de 'IP_TOS'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(136,1): warning C4005: 'IP_TTL' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(348): message : voir la définition précédente de 'IP_TTL'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(137,1): warning C4005: 'IP_MULTICAST_IF' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(343): message : voir la définition précédente de 'IP_MULTICAST_IF'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(138,1): warning C4005: 'IP_MULTICAST_TTL' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(344): message : voir la définition précédente de 'IP_MULTICAST_TTL'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(139,1): warning C4005: 'IP_MULTICAST_LOOP' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(345): message : voir la définition précédente de 'IP_MULTICAST_LOOP'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(140,1): warning C4005: 'IP_ADD_MEMBERSHIP' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(346): message : voir la définition précédente de 'IP_ADD_MEMBERSHIP'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(141,1): warning C4005: 'IP_DROP_MEMBERSHIP' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(347): message : voir la définition précédente de 'IP_DROP_MEMBERSHIP'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h(142,1): warning C4005: 'IP_DONTFRAGMENT' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(350): message : voir la définition précédente de 'IP_DONTFRAGMENT'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(733,30): error C2061: erreur de syntaxe : identificateur 'MULTICAST_MODE_TYPE'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(740,5): error C2065: 'PIP_MSFILTER' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(740,18): error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'Filter'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(740,18): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(742,9): error C2065: 'SourceCount' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(743,40): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(743,60): error C2065: 'SourceList' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(744,9): error C2065: 'WSASetLastError' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(748,12): error C2065: 'IP_MSFILTER' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(748,12): error C2065: 'SourceCount' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(749,5): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(749,15): error C2065: 'PIP_MSFILTER' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(749,29): error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'HeapAlloc'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(750,9): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(751,9): error C2065: 'WSASetLastError' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(755,5): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(756,5): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(757,5): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(757,26): error C2065: 'FilterMode' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(758,5): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(758,27): error C2065: 'SourceCount' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(759,9): error C2065: 'SourceCount' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(760,1): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(760,1): error C2065: 'SourceList' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(760,1): error C2065: 'SourceCount' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(760,1): error C2660: 'memcpy' : la fonction ne prend pas 2 arguments
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Preview\VC\Tools\MSVC\14.24.28314\include\vcruntime_string.h(40,15): message : voir la déclaration de 'memcpy'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(764,47): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(767,35): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(779,31): error C2061: erreur de syntaxe : identificateur 'MULTICAST_MODE_TYPE'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(786,5): error C2065: 'PIP_MSFILTER' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(786,18): error C2146: erreur de syntaxe : absence de ';' avant l'identificateur 'Filter'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(786,18): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(788,10): error C2065: 'SourceCount' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(789,40): error C2065: 'Filter' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(789,60): error C2065: 'SourceList' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(790,9): error C2065: 'WSASetLastError' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(794,12): error C2065: 'IP_MSFILTER' : identificateur non déclaré
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h(794,12): fatal error C1003: le nombre d'erreurs est supérieur à 100 ; arrêt de la compilation

Error C2664 in HTTPRequest.hpp file

Within file HTTPRequest.hpp, line 379, we get error C2664.
Changing the line to std::unique_ptr<addrinfo, void(__stdcall*)(addrinfo*)> addressInfo(info, freeaddrinfo); seems to fix the issue.

issue

how can i get web page body as string ?

add Json

add simple json handler if need to post Json

using namespace std;

namespace R2 {

class Json {
public:

	string serialize(map<string, string> data)
	{
		string _d;

		_d = "{";

		map<string, string>::iterator it;

		for (it = data.begin(); it != data.end(); ++it)
		{
			if (it == prev(data.end()))
			{
				_d += "\"" + it->first + "\": \"" + it->second + "\"}";
				break;
			}

			_d += "\"" + it->first + "\": \"" + it->second + "\", ";
		}

		return _d;
	}

};}

#USING :

R2::Json json; 
string data = json.serialize(map<string, string>({{"username", "mathio"},{"password", "MyPass"}}));

Get file request

Hi,
how can I retrieve the data from a file?

example link: cdn.discordapp.com/attachments/774651261569465165478/text.txt ?

How to download binary file from https url?

Hi Elnormous,
I have a mini project about embedded system. Your library is very helpul for my project. Thank you so much.
But i have a problem, when I make a Post request to server, server send back the https url link to download a binary file. I dont know how to download binary file from https url to disk with this library. I cant find any example about that. Can you help me please?
Thank you!

HTTP proxy

I need to use an HTTP proxy when sending requests, what should I do?

Question on how to use this for streaming a response.

Hi,

I am using your library in my application which makes requests to a Python CherryPy server on the same machine.
My use-case making a PUT request to the CherryPy server and the server streams back bytes with content type octet/stream.

My question is: Is it possible to properly stream these octets as they come from the server using this library?

Thanks,
any help will be appreciated.

HTTP author curl -u support

I want to write a C++ HTTP client to query ES's RESTful API, but ES has user and password, I do it with curl -u user:password http://xxxx.

~ curl http://10.130.148.131:9200/_cluster/health
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/_cluster/health]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/_cluster/health]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}[shijunqin@10-165-15-4 ~]# 

~ curl -u [user]:[password]  http://10.130.148.131:9200/_cluster/health
{"cluster_name":"es-h7jpiub2","status":"green","timed_out":false,"number_of_nodes":9,"number_of_data_nodes":6,"active_primary_shards":412,"active_shards":424,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}

On windows i get some random errors?

I just imported this into my project and i get these errors
Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol __imp_connect referenced in function "public: struct http::Response __cdecl http::Request::send(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &)" (?send@Request@http@@QEAA?AUResponse@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@5@@Z) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_closesocket referenced in function "private: void __cdecl http::Socket::close(void)" (?close@Socket@http@@AEAAXXZ) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_recv referenced in function "public: struct http::Response __cdecl http::Request::send(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &)" (?send@Request@http@@QEAA?AUResponse@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@5@@Z) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_send referenced in function "public: struct http::Response __cdecl http::Request::send(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &)" (?send@Request@http@@QEAA?AUResponse@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@5@@Z) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_socket referenced in function "public: __cdecl http::Socket::Socket(enum http::InternetProtocol)" (??0Socket@http@@QEAA@W4InternetProtocol@1@@Z) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_WSAStartup referenced in function "public: __cdecl http::WinSock::WinSock(void)" (??0WinSock@http@@QEAA@XZ) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_WSACleanup referenced in function "public: __cdecl http::WinSock::~WinSock(void)" (??1WinSock@http@@QEAA@XZ) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_WSAGetLastError referenced in function "int __cdecl http::getLastError(void)" (?getLastError@http@@YAHXZ) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_getaddrinfo referenced in function "public: struct http::Response __cdecl http::Request::send(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &)" (?send@Request@http@@QEAA?AUResponse@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@5@@Z) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK2019 unresolved external symbol __imp_freeaddrinfo referenced in function "public: struct http::Response __cdecl http::Request::send(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const &)" (?send@Request@http@@QEAA?AUResponse@2@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0AEBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@5@@Z) C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS.cpp.obj 1 Error LNK1120 10 unresolved externals C:\Users\d0b\source\repos\NGDDoS\CMakeLists.txt C:\Users\d0b\source\repos\NGDDoS\NGDDoS\NGDDoS.exe 1

Json post bug

I built a request using nlohmann:: JSON and wrote the code according to the example, but I encountered the following bug:

terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
Aborted

You should use a JSON library like https://github.com/nlohmann/json for JSON encoding. JSON is not a part of the HTTP standard (RFC 7231) so it is out of the scope of this library. I added an example on hot wo send a JSON POST in b6b8795.

Originally posted by @elnormous in #38 (comment)

Too many errors

After including it into Visual Studio 17 2022 and compiling i am getting those errors: (in german language)

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(103,1): warning C4005: "AF_IPX": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(457): message : Siehe vorherige Definition von "AF_IPX"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(147,1): warning C4005: "AF_MAX": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(476): message : Siehe vorherige Definition von "AF_MAX"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(187,1): warning C4005: "SO_DONTLINGER": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(399): message : Siehe vorherige Definition von "SO_DONTLINGER"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(240,25): error C2011: "sockaddr": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(482): message : Siehe Deklaration von "sockaddr"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(442,5): error C2143: Syntaxfehler: Es fehlt "}" vor "Konstante"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(442,5): error C2059: Syntaxfehler: "Konstante"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(496,1): error C2143: Syntaxfehler: Es fehlt ";" vor "}"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(496,10): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(496,20): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(577,1): warning C4005: "IN_CLASSA": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(284): message : Siehe vorherige Definition von "IN_CLASSA"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(583,1): warning C4005: "IN_CLASSB": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(290): message : Siehe vorherige Definition von "IN_CLASSB"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(589,1): warning C4005: "IN_CLASSC": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(296): message : Siehe vorherige Definition von "IN_CLASSC"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(600,1): warning C4005: "INADDR_ANY": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(301): message : Siehe vorherige Definition von "INADDR_ANY"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(602,1): warning C4005: "INADDR_BROADCAST": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(303): message : Siehe vorherige Definition von "INADDR_BROADCAST"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2def.h(638,28): error C2011: "sockaddr_in": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(309): message : Siehe Deklaration von "sockaddr_in"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(136,23): error C2011: "fd_set": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(65): message : Siehe Deklaration von "fd_set"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(171,1): warning C4005: "FD_SET": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(99): message : Siehe vorherige Definition von "FD_SET"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(180,16): error C2011: "timeval": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(108): message : Siehe Deklaration von "timeval"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(236,17): error C2011: "hostent": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(164): message : Siehe Deklaration von "hostent"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(249,16): error C2011: "netent": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(177): message : Siehe Deklaration von "netent"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(256,17): error C2011: "servent": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(184): message : Siehe Deklaration von "servent"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(268,18): error C2011: "protoent": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(196): message : Siehe Deklaration von "protoent"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(364,24): error C2011: "WSAData": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(319): message : Siehe Deklaration von "WSAData"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(462,18): error C2011: "sockproto": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(491): message : Siehe Deklaration von "sockproto"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(504,16): error C2011: "linger": "struct" Typneudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(528): message : Siehe Deklaration von "linger"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(517,1): warning C4005: "SOMAXCONN": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(541): message : Siehe vorherige Definition von "SOMAXCONN"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(551,1): warning C4005: "FD_READ": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(559): message : Siehe vorherige Definition von "FD_READ"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(554,1): warning C4005: "FD_WRITE": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(560): message : Siehe vorherige Definition von "FD_WRITE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(557,1): warning C4005: "FD_OOB": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(561): message : Siehe vorherige Definition von "FD_OOB"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(560,1): warning C4005: "FD_ACCEPT": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(562): message : Siehe vorherige Definition von "FD_ACCEPT"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(563,1): warning C4005: "FD_CONNECT": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(563): message : Siehe vorherige Definition von "FD_CONNECT"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(566,1): warning C4005: "FD_CLOSE": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(564): message : Siehe vorherige Definition von "FD_CLOSE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1631,1): error C2375: "accept": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(739): message : Siehe Deklaration von "accept"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1653,1): error C2375: "bind": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(744): message : Siehe Deklaration von "bind"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1674,1): error C2375: "closesocket": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(749): message : Siehe Deklaration von "closesocket"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1691,1): error C2375: "connect": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(751): message : Siehe Deklaration von "connect"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1712,1): error C2375: "ioctlsocket": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(756): message : Siehe Deklaration von "ioctlsocket"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1735,1): error C2375: "getpeername": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(761): message : Siehe Deklaration von "getpeername"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1756,1): error C2375: "getsockname": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(766): message : Siehe Deklaration von "getsockname"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1777,1): error C2375: "getsockopt": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(771): message : Siehe Deklaration von "getsockopt"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1802,1): error C2375: "htonl": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(778): message : Siehe Deklaration von "htonl"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1819,1): error C2375: "htons": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(780): message : Siehe Deklaration von "htons"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1837,1): error C2375: "inet_addr": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(782): message : Siehe Deklaration von "inet_addr"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1855,1): error C2375: "inet_ntoa": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(784): message : Siehe Deklaration von "inet_ntoa"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1955,1): error C2375: "listen": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(786): message : Siehe Deklaration von "listen"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1974,1): error C2375: "ntohl": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(790): message : Siehe Deklaration von "ntohl"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(1991,1): error C2375: "ntohs": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(792): message : Siehe Deklaration von "ntohs"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2008,1): error C2375: "recv": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(794): message : Siehe Deklaration von "recv"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2031,1): error C2375: "recvfrom": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(800): message : Siehe Deklaration von "recvfrom"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2058,1): error C2375: "select": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(808): message : Siehe Deklaration von "select"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2083,1): error C2375: "send": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(815): message : Siehe Deklaration von "send"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2106,1): error C2375: "sendto": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(821): message : Siehe Deklaration von "sendto"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2133,1): error C2375: "setsockopt": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(829): message : Siehe Deklaration von "setsockopt"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2158,1): error C2375: "shutdown": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(836): message : Siehe Deklaration von "shutdown"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2178,1): error C2375: "socket": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(840): message : Siehe Deklaration von "socket"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2203,1): error C2375: "gethostbyaddr": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(847): message : Siehe Deklaration von "gethostbyaddr"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2225,1): error C2375: "gethostbyname": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(852): message : Siehe Deklaration von "gethostbyname"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2242,1): error C2375: "gethostname": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(854): message : Siehe Deklaration von "gethostname"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2282,1): error C2375: "getservbyport": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(858): message : Siehe Deklaration von "getservbyport"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2301,1): error C2375: "getservbyname": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(862): message : Siehe Deklaration von "getservbyname"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2320,1): error C2375: "getprotobynumber": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(866): message : Siehe Deklaration von "getprotobynumber"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2337,1): error C2375: "getprotobyname": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(868): message : Siehe Deklaration von "getprotobyname"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2357,1): error C2375: "WSAStartup": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(872): message : Siehe Deklaration von "WSAStartup"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2377,1): error C2375: "WSACleanup": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(876): message : Siehe Deklaration von "WSACleanup"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2394,1): error C2375: "WSASetLastError": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(878): message : Siehe Deklaration von "WSASetLastError"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2411,1): error C2375: "WSAGetLastError": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(880): message : Siehe Deklaration von "WSAGetLastError"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2432,1): error C2375: "WSAIsBlocking": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(882): message : Siehe Deklaration von "WSAIsBlocking"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2450,1): error C2375: "WSAUnhookBlockingHook": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(884): message : Siehe Deklaration von "WSAUnhookBlockingHook"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2468,1): error C2375: "WSASetBlockingHook": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(886): message : Siehe Deklaration von "WSASetBlockingHook"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2486,1): error C2375: "WSACancelBlockingCall": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(888): message : Siehe Deklaration von "WSACancelBlockingCall"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2504,1): error C2375: "WSAAsyncGetServByName": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(890): message : Siehe Deklaration von "WSAAsyncGetServByName"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2532,1): error C2375: "WSAAsyncGetServByPort": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(898): message : Siehe Deklaration von "WSAAsyncGetServByPort"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2560,1): error C2375: "WSAAsyncGetProtoByName": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(906): message : Siehe Deklaration von "WSAAsyncGetProtoByName"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2586,1): error C2375: "WSAAsyncGetProtoByNumber": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(913): message : Siehe Deklaration von "WSAAsyncGetProtoByNumber"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2612,1): error C2375: "WSAAsyncGetHostByName": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(920): message : Siehe Deklaration von "WSAAsyncGetHostByName"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2638,1): error C2375: "WSAAsyncGetHostByAddr": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(927): message : Siehe Deklaration von "WSAAsyncGetHostByAddr"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2668,1): error C2375: "WSACancelAsyncRequest": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(936): message : Siehe Deklaration von "WSACancelAsyncRequest"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(2686,1): error C2375: "WSAAsyncSelect": Neudefinition; unterschiedliche Bindung
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(938): message : Siehe Deklaration von "WSAAsyncSelect"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(4318,1): error C2059: Syntaxfehler: "}"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock2.h(4318,1): error C2143: Syntaxfehler: Es fehlt ";" vor "}"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(42,12): error C2143: Syntaxfehler: Es fehlt ";" vor "{"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(42,12): error C2447: "{": Funktionsheader fehlt - Parameterliste im alten Stil?
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(135,1): warning C4005: "IP_TOS": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(349): message : Siehe vorherige Definition von "IP_TOS"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(136,1): warning C4005: "IP_TTL": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(348): message : Siehe vorherige Definition von "IP_TTL"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(137,1): warning C4005: "IP_MULTICAST_IF": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(343): message : Siehe vorherige Definition von "IP_MULTICAST_IF"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(138,1): warning C4005: "IP_MULTICAST_TTL": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(344): message : Siehe vorherige Definition von "IP_MULTICAST_TTL"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(139,1): warning C4005: "IP_MULTICAST_LOOP": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(345): message : Siehe vorherige Definition von "IP_MULTICAST_LOOP"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(140,1): warning C4005: "IP_ADD_MEMBERSHIP": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(346): message : Siehe vorherige Definition von "IP_ADD_MEMBERSHIP"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(141,1): warning C4005: "IP_DROP_MEMBERSHIP": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(347): message : Siehe vorherige Definition von "IP_DROP_MEMBERSHIP"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\shared\ws2ipdef.h(142,1): warning C4005: "IP_DONTFRAGMENT": Makro-Neudefinition
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\winsock.h(350): message : Siehe vorherige Definition von "IP_DONTFRAGMENT"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(733,10): error C2061: Syntaxfehler: Bezeichner "MULTICAST_MODE_TYPE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(740,5): error C2065: "PIP_MSFILTER": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(740,18): error C2146: Syntaxfehler: Fehlendes ";" vor Bezeichner "Filter"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(740,18): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(742,9): error C2065: "SourceCount": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(743,40): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(743,60): error C2065: "SourceList": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(744,9): error C2065: "WSASetLastError": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(748,12): error C2065: "IP_MSFILTER": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(748,12): error C2065: "SourceCount": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(749,5): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(749,15): error C2065: "PIP_MSFILTER": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(749,29): error C2146: Syntaxfehler: Fehlendes ";" vor Bezeichner "HeapAlloc"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(750,9): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(751,9): error C2065: "WSASetLastError": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(755,5): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(756,5): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(757,5): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(757,26): error C2065: "FilterMode": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(758,5): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(758,27): error C2065: "SourceCount": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(759,9): error C2065: "SourceCount": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(760,1): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(760,1): error C2065: "SourceList": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(760,1): error C2065: "SourceCount": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(760,1): error C2660: "memcpy": Funktion akzeptiert keine 2 Argumente
1>C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\vcruntime_string.h(43,15): message : Siehe Deklaration von "memcpy"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(764,47): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(767,35): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(779,11): error C2061: Syntaxfehler: Bezeichner "MULTICAST_MODE_TYPE"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(786,5): error C2065: "PIP_MSFILTER": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(786,18): error C2146: Syntaxfehler: Fehlendes ";" vor Bezeichner "Filter"
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(786,18): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(788,10): error C2065: "SourceCount": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(789,40): error C2065: "Filter": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(789,60): error C2065: "SourceList": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(790,9): error C2065: "WSASetLastError": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(794,12): error C2065: "IP_MSFILTER": nichtdeklarierter Bezeichner
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um\ws2tcpip.h(794,12): fatal error C1003: Mehr als 100 Fehler gefunden; Kompilierung wird abgebrochen.

Slow performance on Windows 10

I can install and compile your code very easily, but for some reason a simple GET to a localhost server takes upwards of 20 seconds, whereas it is instant in firefox. Is there a Windows firewall setting or something that may be causing this?

Send header

How can i send a header in a get or post request?

Linking error

Hey, I'm kinda new to C++, and I've been trying to include your .hpp file in my project and it gave me these linking errors:
I've included the file in the project and the IDE recognizes it, but It gives these linking errors when I try to build it.
Do you have any tips to fix this issue?
snippet

Wont compile

just tells me this:
../include/HTTPRequest.hpp: In member function 'http::Response http::Request::send(const string&, const std::vector&, const std::vector<std::basic_string >&, std::chrono::milliseconds)':
../include/HTTPRequest.hpp:537:13: error: 'addrinfo' was not declared in this scope
537 | addrinfo hints = {};
| ^~~~~~~~
../include/HTTPRequest.hpp:538:13: error: 'hints' was not declared in this scope; did you mean 'int'?
538 | hints.ai_family = getAddressFamily(internetProtocol);
| ^~~~~
| int
../include/HTTPRequest.hpp:541:23: error: 'info' was not declared in this scope
541 | addrinfo* info;
| ^~~~
../include/HTTPRequest.hpp:542:17: error: 'getaddrinfo' was not declared in this scope
542 | if (getaddrinfo(domain.c_str(), port.c_str(), &hints, &info) != 0)
| ^~~~~~~~~~~
../include/HTTPRequest.hpp:545:55: error: 'freeaddrinfo' was not declared in this scope
545 | const std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> addressInfo{info, freeaddrinfo};
| ^~~~~~~~~~~~
../include/HTTPRequest.hpp:545:68: error: template argument 2 is invalid
545 | const std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> addressInfo{info, freeaddrinfo};
| ^
../include/HTTPRequest.hpp:545:70: error: scalar object 'addressInfo' requires one element in initializer
545 | const std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> addressInfo{info, freeaddrinfo};
| ^~~~~~~~~~~
../include/HTTPRequest.hpp:586:17: warning: declaration of 'headers' shadows a parameter [-Wshadow]
586 | headers,
| ^~~~~~~
../include/HTTPRequest.hpp:529:55: note: shadowed declaration is here
529 | const std::vectorstd::string& headers,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~
../include/HTTPRequest.hpp:587:17: warning: declaration of 'body' shadows a parameter [-Wshadow]
587 | body
| ^~~~
../include/HTTPRequest.hpp:528:51: note: shadowed declaration is here
528 | const std::vector<uint8_t>& body,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
make: *** [Makefile:37: main.o] Error 1
i tried including the libs it just makes more errors

Response empty

Hello,

I am making a call to the imgflip API but when I make that call, although there are no errors, the response is empty. Trying to print the response yields nothing and printing the response.body.size() outputs a value of zero.

Post request failed

Idk what´s wrong here, but the post request failed.
For example if I use another lib like restclient-cpp it`s working fine.
But libcurl is hughe that´s why I want to switch to a header only.

Here is the code ->
http::Request request("https://api.tarkov.dev/graphql"); const auto parameters = (xorstr_( "{\"operationName\":null,\"variables\":{},\"query\":\"{\\n items: itemsByType(type: any) {\\n id\\n name\\n avg24hPrice\\n width\\n height\\n }\\n}\\n\"}")); const auto response = request.send("POST", parameters, {"Content-Type: application/json"});

Windows10 Runtime Get Error

Hello, i noticed that when running this test code:

    http::Request request("http://test.com/test");
    // send a get request
    http::Response response = request.send("GET");
    std::cout << response.body.data() << std::endl; // print the result

It gets an error in HtppRequest.h line 401.
I fixed it with putting this code right before line 401:

      WSADATA wsaData;
      int error = WSAStartup(MAKEWORD(2, 2), &wsaData);
      if (error != 0)
        	throw std::system_error(error, std::system_category(), "WSAStartup failed");


now everything seems to work

Timeout not implementable

I just want to understand what i am doing wrong :/

string webRequest(std::string path)
{
try
{
http::Request request{ serverUrl + path };
const auto response = request.send("GET", std::chrono::seconds(2)); // <--- Error pointed (When i remove the chrono, it works but the request never get any timeout, so never catched
std::cout << "RESPONSe : " << response.status;
return std::string{ response.body.begin(), response.body.end() };
}
catch (const std::exception& e) {
std::cout << e.what();
return ""; // Failed, don't crash but return no response.
}
}

Error (active) E0304 no instance of overloaded function "http::Request::send" matches the argument list

Error between winsock2.h and ws2def.h

I simply include "HttpRequest.cpp" and at compile time I have 161 errors of this type :

1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(457): message : voir la définition précédente de 'AF_IPX'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(147,1): warning C4005: 'AF_MAX' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(476): message : voir la définition précédente de 'AF_MAX'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(185,1): warning C4005: 'SO_DONTLINGER' : redéfinition de macro
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(399): message : voir la définition précédente de 'SO_DONTLINGER'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(238,25): error C2011: 'sockaddr' : redéfinition du type 'struct'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(1007): message : voir la déclaration de 'sockaddr'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(440,5): error C2143: erreur de syntaxe : absence de '}' avant 'constante'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(440,27): error C2059: erreur de syntaxe : 'constante'
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,1): error C2143: erreur de syntaxe : absence de ';' avant '}'```

I tried a lot of solutions like including windows.h before httprequest.cpp but nothing works

Need to specify port in request header!

When I used the method "POST" and an address with port number 8080. I always got an 502 bad gateway error. After using wireshark and compare the c++ post request with the curl post request, I found that in the header you need to concatenate the port number after the domain! In the original implementation, the header string just contains a domain there.

I am not a native speaker, and any discussion is welcomed. I'll start a pull request later time.

Message headers are case-insensitive

According to RFC 2616 the Message Headers are case-insensitive (stated as: "Field names are case-insensitive"). However, your code is checking for "Content-Length" and "Transfer-Encoding" in a case sensitive manner so it does not process the response for some web servers. Any chance this can be modified? If a PR is better I can provide one.

Implement support for timeout specification

For the application I'm working on it would be useful to be able to specify the connection and send/recv timeout.

This could be implemented as an extra optional argument to relevant methods (e.g. Request::send()), as a connection-wide option to the Request() constructor, or something else.

Failed to get address info of

Hi,

Some of my users keep getting

"Failed to get address info of xxxxx.com" error

I'm trying to understand what nay cause this error with no luck, any help would be appreciated!

Thanks!

HTTPS support?

This is a great compact library but I would need HTTPS support in order to use it. Is this a possibility?

Receive the following errors when trying to include

HTTPRequest.hpp: In member function 'http::Response http::Request::send(const string&, const string&, const std::vector<std::__cxx11::basic_string >&)':
HTTPRequest.hpp:398:72: error: 'getaddrinfo' was not declared in this scope
if (getaddrinfo(domain.c_str(), port.c_str(), &hints, &info) != 0)
^
HTTPRequest.hpp:401:49: error: 'freeaddrinfo' was not declared in this scope
std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> addressInfo(info, freeaddrinfo);
^~~~~~~~~~~~
HTTPRequest.hpp:401:62: error: template argument 2 is invalid
std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> addressInfo(info, freeaddrinfo);
^
HTTPRequest.hpp:401:94: error: expression list treated as compound expression in initializer [-fpermissive]
std::unique_ptr<addrinfo, decltype(&freeaddrinfo)> addressInfo(info, freeaddrinfo);
^
HTTPRequest.hpp:406:46: error: base operand of '->' is not a pointer
if (::connect(socket, addressInfo->ai_addr, static_cast<socklen_t>(addressInfo->ai_addrlen)) < 0)
^~
HTTPRequest.hpp:406:91: error: base operand of '->' is not a pointer
if (::connect(socket, addressInfo->ai_addr, static_cast<socklen_t>(addressInfo->ai_addrlen)) < 0)

invalid or corrupt file

[Visual Studio 2019]
Hi,
when I try #include "HTTPRequest.hpp" and then try to compile I get the error "Invalid or corrupt file: cannot read at 0x5F48". I can see the file in the solution explorer and added it to the additional dependencies in the linker. The Microsoft-Docs say to recreate the file, but even that didn't help.
Sorry if I am just forgetting something but I am a bit new to c++.

Responses

Sorry for a brain dead question:
After posting to my PHP webpage, how would I get the ‘echo’ response to my c++ client?

Thanks in advance.

Does it support C++11?

I got a bunch of errors trying to compile it. test/Makefile says its c++17. Just to make sure, does it support 11 or am i missing something??

If it doesn't, you should write supported versions in README

Errors when trying to build a DLL

I get these errorsSeverity Code Description Project File Line Suppression State Error C2011 'sockproto': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 462 Error C2375 'accept': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1625 Error C2375 'bind': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1647 Error C2375 'closesocket': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1668 Error C2375 'connect': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1685 Error C2011 'fd_set': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 136 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 740 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 743 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 749 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 750 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 755 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 756 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 757 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 758 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 760 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 764 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 767 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 786 Error C2065 'Filter': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 789 Error C2065 'FilterMode': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 757 Error C2375 'gethostbyaddr': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2197 Error C2375 'gethostbyname': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2219 Error C2375 'gethostname': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2236 Error C2375 'getpeername': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1729 Error C2375 'getprotobyname': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2331 Error C2375 'getprotobynumber': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2314 Error C2375 'getservbyname': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2295 Error C2375 'getservbyport': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2276 Error C2375 'getsockname': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1750 Error C2375 'getsockopt': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1771 Error C2011 'hostent': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 236 Error C2375 'htonl': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1796 Error C2375 'htons': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1813 Error C2375 'inet_addr': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1831 Error C2375 'inet_ntoa': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1849 Error C2375 'ioctlsocket': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1706 Error C2065 'IP_MSFILTER': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 748 Error C2065 'IP_MSFILTER': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 794 Error C2011 'linger': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 504 Error C2375 'listen': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1949 Error C2660 'memcpy': function does not take 2 arguments DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 760 Error C2011 'netent': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 249 Error C2375 'ntohl': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1968 Error C2375 'ntohs': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 1985 Error C2065 'PIP_MSFILTER': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 740 Error C2065 'PIP_MSFILTER': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 749 Error C2065 'PIP_MSFILTER': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 786 Error C2011 'protoent': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 268 Error C2375 'recv': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2002 Error C2375 'recvfrom': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2025 Error C2375 'select': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2052 Error C2375 'send': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2077 Error C2375 'sendto': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2100 Error C2011 'servent': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 256 Error C2375 'setsockopt': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2127 Error C2375 'shutdown': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2152 Error C2011 'sockaddr': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 238 Error C2011 'sockaddr_in': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 636 Error C2375 'socket': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2172 Error C2065 'SourceCount': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 742 Error C2065 'SourceCount': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 748 Error C2065 'SourceCount': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 758 Error C2065 'SourceCount': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 759 Error C2065 'SourceCount': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 760 Error C2065 'SourceCount': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 788 Error C2065 'SourceList': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 743 Error C2065 'SourceList': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 760 Error C2065 'SourceList': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 789 Error C2011 'timeval': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 180 Error C2375 'WSAAsyncGetHostByAddr': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2632 Error C2375 'WSAAsyncGetHostByName': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2606 Error C2375 'WSAAsyncGetProtoByName': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2554 Error C2375 'WSAAsyncGetProtoByNumber': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2580 Error C2375 'WSAAsyncGetServByName': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2498 Error C2375 'WSAAsyncGetServByPort': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2526 Error C2375 'WSAAsyncSelect': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2680 Error C2375 'WSACancelAsyncRequest': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2662 Error C2375 'WSACancelBlockingCall': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2480 Error C2375 'WSACleanup': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2371 Error C2011 'WSAData': 'struct' type redefinition DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 364 Error C2375 'WSAGetLastError': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2405 Error C2375 'WSAIsBlocking': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2426 Error C2375 'WSASetBlockingHook': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2462 Error C2375 'WSASetLastError': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2388 Error C2065 'WSASetLastError': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 744 Error C2065 'WSASetLastError': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 751 Error C2065 'WSASetLastError': undeclared identifier DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 790 Error C2375 'WSAStartup': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2351 Error C2375 'WSAUnhookBlockingHook': redefinition; different linkage DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 2444 Error C2447 '{': missing function header (old-style formal list?) DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h 42 Error C1003 error count exceeds 100; stopping compilation DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 794 Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 494 Error C4430 missing type specifier - int assumed. Note: C++ does not support default-int DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 494 Error C2059 syntax error: 'constant' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 440 Error C2059 syntax error: '}' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 4206 Error C2061 syntax error: identifier 'MULTICAST_MODE_TYPE' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 733 Error C2061 syntax error: identifier 'MULTICAST_MODE_TYPE' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 779 Error C2143 syntax error: missing ';' before '{' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2ipdef.h 42 Error C2143 syntax error: missing ';' before '}' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 494 Error C2143 syntax error: missing ';' before '}' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\WinSock2.h 4206 Error C2146 syntax error: missing ';' before identifier 'Filter' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 740 Error C2146 syntax error: missing ';' before identifier 'Filter' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 786 Error C2146 syntax error: missing ';' before identifier 'HeapAlloc' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\ws2tcpip.h 749 Error C2143 syntax error: missing '}' before 'constant' DeltaWare C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h 440

HTTPS Support

Thanks for the wonderful sample. Can you please tell me how I can use HTTPS scheme ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.