340 votes

Comment faire une demande HTTP avec le C++ ?

Est-il possible de facilement faire une requête HTTP avec C++, sont là toutes les bibliothèques qui font ceci. Plus précisément, je veux télécharger le contenu d’une page (une API) et vérifiez le contenu pour voir si elle contient un 1 ou un 0. Est-il également possible de télécharger le contenu dans une chaîne ?

Exemples de code serait bons.

315voto

neuro Points 6590

J'ai eu le même problème. libcurl est vraiment complète. Il y a un wrapper C++ curlpp qui pourraient vous intéresser comme vous vous demandez une bibliothèque C++. le néon est un autre élément intéressant de la bibliothèque C qui prennent également en charge le protocole webdav.

curlpp semble naturel si vous utilisez C++. Il existe de nombreux exemplesfournis. Pour obtenir le contenu d'une URL que vous faire quelque chose comme ça (extrait à partir d'exemples) :

// Edit : rewritten for cURLpp 0.7.3
// Note : namespace changed, was cURLpp in 0.7.2 ...
#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>

// RAII cleanup
curlpp::Cleanup myCleanup;

// standard request object.
curlpp::Easy myRequest;

// Set the URL.
myRequest.setOpt(new curlpp::options::Url(std::string("http://www.wikipedia.com")));

// Send request and get a result.
// By default the result goes to standard output.
// Here I use a shortcut to get it in a string stream ...
std::ostringstream os;
os << myRequest.perform();

string asAskedInQuestion = os.str();

my 2 cents ...

134voto

Software_Developer Points 3082

Code de Windows :

61voto

Homer6 Points 5850

Sur Linux, j'ai essayé rpc-netlib, libcurl, curlpp, urdl, boost::asio et considéré comme Qt (mais tourné vers le bas en fonction de la licence). Tous ces sont soit incomplets, pour cet usage, avait bâclé interfaces, avait une mauvaise documentation, ont été laissés à l'abandon ou ne prend pas en charge le protocole https.

Puis, à la suggestion de http://stackoverflow.com/a/1012577/278976, j'ai essayé de POCO. Wow, je souhaite que je l'avais vu il y a des années. Voici un exemple de faire une demande HTTP GET:

http://xjia.heroku.com/2011/09/10/learning-poco-get-with-http/

POCO est gratuit, open source (licence boost). Et non, je n'ai aucune affiliation avec la société; j'aime juste leurs interfaces. Super boulot les gars (et les filles).

http://pocoproject.org/download/index.html

Espérons que cela aide quelqu'un... il m'a fallu trois jours pour essayer toutes ces bibliothèques.

20voto

Éric Malenfant Points 10082

Quelques autres possibilités :

17voto

Gerald Points 13865

libcURL est une API assez léger et facile à utiliser qui supporte HTTP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X