How to send http request and retrieve a json response C++ Boost How to send http request and retrieve a json response C++ Boost json json

How to send http request and retrieve a json response C++ Boost


The simplest thing that fits the description:

Live On Coliru

#include <boost/asio.hpp>#include <iostream>int main() {    boost::system::error_code ec;    using namespace boost::asio;    // what we need    io_service svc;    ip::tcp::socket sock(svc);    sock.connect({ {}, 8087 }); // http://localhost:8087 for testing    // send request    std::string request("GET /newGame?name=david HTTP/1.1\r\n\r\n");    sock.send(buffer(request));    // read response    std::string response;    do {        char buf[1024];        size_t bytes_transferred = sock.receive(buffer(buf), {}, ec);        if (!ec) response.append(buf, buf + bytes_transferred);    } while (!ec);    // print and exit    std::cout << "Response received: '" << response << "'\n";}

This receives the full response. You can test it with a dummy server:
(also Live On Coliru):

netcat -l localhost 8087 <<< '"status":"okay", "id":"game-23", "letter":2'

This will show that the request is received, and the response will be written out by our client code above.

Note that for more ideas you could look at the examples http://www.boost.org/doc/libs/release/doc/html/boost_asio/examples.html (although they focus on asynchronous communications, because that's the topic of the Asio library)