La cosa più semplice che si adatta alla descrizione:
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";
}
Questo riceve la risposta completa. È possibile verificare con un server fittizio:
(anche Live On Coliru):
netcat -l localhost 8087 <<< '"status":"okay", "id":"game-23", "letter":2'
Questo mostrerà che la richiesta è pervenuta, e la risposta sarà scritto dal nostro codice client sopra.
Si noti che per più idee si poteva guardare gli esempi http://www.boost.org/doc/libs/release/doc/html/boost_asio/examples.html (anche se essi si concentrano sulle comunicazioni asincrone, perché questo è il tema della biblioteca Asio)
Nota per i biglietti da gravi (server web principalmente esistenti che possono fare qualsiasi sorta di Chunked encoding, compressions, keep-alive, redirect responses ecc.) vorrete usare una libreria come http://curl.haxx.se/libcurl/ – sehe