Question

Essayer d'utiliser libcurlpp (un wrapper C ++ sur libcurl) pour publier un formulaire et obtenir la réponse. Tout fonctionne, mais je ne sais pas comment accéder par programme par programmation à la réponse de l'objet Curlpp :: Easy une fois la transaction HTTP terminée. Bascialement:

#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
...
curlpp::Easy foo;
foo.setOpt( new curlpp::options::Url( "http://example.com/" ) );
foo.setOpt( new curlpp::options::Verbose( true ) );
...many other options set...
foo.perform();  // this executes the HTTP transaction

Lorsque ce code s'exécute, car Verbose est réglé sur true Je peux voir que la réponse obtenir la sortie vers STDOUT. Mais comment puis-je avoir accès à la réponse complète au lieu de le faire vider à Stdout? Le curlpp :: Easy ne semble pas avoir de méthodes pour accéder à la réponse.

Beaucoup de succès dans Google avec des gens posant la même question, mais pas de réponses. La liste de diffusion Curlpp est une zone morte, et la section API du site Web Curlpp est cassée depuis un an.

Était-ce utile?

La solution

C'est comme ça que je l'ai finalement fait:

// HTTP response body (not headers) will be sent directly to this stringstream
std::stringstream response;

curlpp::Easy foo;
foo.setOpt( new curlpp::options::Url( "http://www.example.com/" ) );
foo.setOpt( new curlpp::options::UserPwd( "blah:passwd" ) );
foo.setOpt( new curlpp::options::WriteStream( &response ) );

// send our request to the web server
foo.perform();

Une fois que foo.perform() Renvoie, le corps de réponse complet est désormais disponible dans le flux fourni en WriteStream().

Autres conseils

Peut-être que Curlpp a été mis à jour depuis la question de la question. J'utilise ce que j'ai trouvé dans Exemple04.cpp.

#include <curlpp/Infos.hpp>

long http_code = 0;
request.perform();
http_code = curlpp::infos::ResponseCode::get(request);
if (http_code == 200) {
    std::cout << "Request succeeded, response: " << http_code << std::endl;
} else {
    std::cout << "Request failed, response: " << http_code << std::endl;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top