Pregunta

Intentando usar libcurlpp (un contenedor de C++ para libcurl) para publicar un formulario y obtener la respuesta.Todo funciona, pero no tengo idea de cómo obtener acceso mediante programación a la respuesta del objeto curlpp::Easy una vez finalizada la transacción http.Básicamente:

#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

Cuando se ejecuta este código, porque Verbose se establece en true Puedo ver que la respuesta se envía a STDOUT.Pero, ¿cómo puedo acceder a la respuesta completa en lugar de volcarla a STDOUT?curlpp::Easy no parece tener ningún método para obtener acceso a la respuesta.

Muchas visitas a Google con personas que hacen la misma pregunta, pero ninguna respuesta.La lista de correo de curlpp es una zona muerta y la sección API del sitio web de curlpp ha estado inactiva durante un año.

¿Fue útil?

Solución

Así lo hice finalmente:

// 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();

Una vez foo.perform() devuelve, el cuerpo completo de la respuesta ahora está disponible en la secuencia proporcionada en WriteStream().

Otros consejos

Quizás curlpp se haya actualizado desde que se hizo la pregunta.Estoy usando esto que encontré en example04.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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top