PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Eine Seite in einen String mit cURLpp laden



Giuly
26-11-2005, 12:08
Hallo,
Kann sein, dass alle das schon kennen, trotzdem finde ich das hilfreich, weil die original-curlpp-hilfe immer in char* schreibt.

#include <curlpp/cURLpp.hpp>
#include <curlpp/Easy.hpp>
#include <curlpp/Options.hpp>
#include <curlpp/Exception.hpp>

#define MAX_FILE_LENGTH 20000

std::string Buffer;

// Muss statisch sein, sonst schlägt das linken fehl
size_t WriteMemoryCallback(char* ptr, size_t size, size_t nmemb)
{
Buffer += ptr;
return size*nmemb;
};


void print()
{
std::cout << "Length: " << std::endl << Buffer.length() << std::endl;
std::cout << "Content: " << std::endl << Buffer << std::endl;
}


int main(int argc, char *argv[])
{
if(argc != 2) {
std::cerr << "Example 05: Wrong number of arguments" << std::endl
<< "Example 05: Usage: example05 url"
<< std::endl;
return EXIT_FAILURE;
}
char *url = argv[1];

try {
cURLpp::Cleanup cleaner;
cURLpp::Easy request;

// Das writer-Callback setzten, damit
// cURL in einen std::string schreibt
cURLpp::Types::WriteFunctionFunctor functor(WriteMemoryCallback);
cURLpp::Options::WriteFunction *test = new cURLpp::Options::WriteFunction(functor);
request.setOpt(test);

// Die URL setzten, die emfangen werden soll
request.setOpt(new cURLpp::Options::Url(url));
request.setOpt(new cURLpp::Options::Verbose(true));
request.perform();

print();
}
catch ( cURLpp::LogicError & e ) {
std::cout << e.what() << std::endl;
}
catch ( cURLpp::RuntimeError & e ) {
std::cout << e.what() << std::endl;
}
}

Sollte selbsterklärend sein.

MfG