How to send http request and retrieve a json response C++ Boost
The simplest thing that fits the description:
#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)