Need help with HTTPRequest?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

elnormous
496 Stars 152 Forks The Unlicense 227 Commits 14 Opened issues

Description

Single-header C++ HTTP request class

Services available

!
?

Need anything else?

Contributors list

# 39,298
hlsl
openal
glsl
Windows
213 commits
# 628,765
C++
1 commit

HTTPRequest

HTTPRequest is a single-header 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.

Usage

Example of GET request

#include "HTTPRequest.hpp"

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 POST request

#include "HTTPRequest.hpp"

try { http::Request request{"http://test.com/test"}; // send a post request const auto response = request.send("POST", "foo=1&bar=baz", { "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 POST request with form data

#include "HTTPRequest.hpp"

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 POST request with a JSON body

#include "HTTPRequest.hpp"

try { http::Request request{"http://test.com/test"}; const std::string body = "{"foo": 1, "bar": "baz"}"; const auto response = request.send("POST", parameters, { "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'; }

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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.