Bonjour,

J'utilise boost::asio et j'aimerai récupérer ce que me retourne une socket dans un string

J'ai trouvé sur leur site un exemple de code client HTTP, dont le code pour récupérer les infos est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
while (boost::asio::read(socket, response,
          boost::asio::transfer_at_least(1), error))
      std::cout << &response;
 
if (error != boost::asio::error::eof)
      throw boost::system::system_error(error);
Ce code marche parfaitement mais il m'affiche les infos. Or je voudrai tout mettre dans un string.

J'ai vu qu'on pouvait faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
string contenuPage, s;
while (boost::asio::read(socket, response,
          boost::asio::transfer_at_least(1), error))
{
      std::istream is(&response);
      is >> s;
      contenuPage += s;
}
Mais ça ne marche pas comme je veux. En fait, ça me lit les données mot par mot (donc c'est pas super si j'ai une longue page web), et ça ne me lit pas toute la page !

Y'a-t-il un moyen plus simple (que je n'aurais pas vu) pour collecter les données ?

Merci d'avance