Pergunta

Tentando usar libcurlpp (um wrapper C++ para o balsa) para postar um formulário e obter a resposta.Tudo funciona, mas eu não tenho nenhuma idéia de como obter programaticamente de acesso para a resposta do curlpp::Fácil de objeto após o http transação foi concluída.Bascially:

#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

Quando esse código é executado, uma vez Verbose é definido como true Eu posso ver a resposta de obter uma saída para o STDOUT.Mas como faço para obter acesso a toda a resposta, em vez de tê-lo de despejo para STDOUT?O curlpp::Fácil, não parece ter quaisquer métodos para obter acesso para a resposta.

Muitos hits no Google com as pessoas a mesma pergunta, mas sem respostas.O curlpp lista de discussão é uma zona morta, e a seção API do curlpp site foi quebrado por um ano.

Foi útil?

Solução

Isto é como eu finalmente fiz isso:

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

Uma vez foo.perform() de retorno, a resposta completa do corpo agora está disponível na sequência fornecida no WriteStream().

Outras dicas

Talvez curlpp ter sido actualizado desde a pergunta foi feita.Eu estou usando esse que eu encontrei em 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top