#include #include #include #include #include #include #include #include #include #include using namespace std; using namespace cURLpp; class MemoryWriter { static const size_t initial_size = 100; protected: char *c; size_t c_size; public: MemoryWriter( ) { c = (char *)malloc( initial_size ); c_size = 0; } ~MemoryWriter( ) { if( c != NULL ) free( c ); } size_t f( char *ptr, size_t s, size_t n ) { size_t part_size = s * n; c = (char *)realloc( c, c_size + part_size + 1 ); assert( c != NULL ); memcpy( &c[c_size], ptr, part_size ); c_size += part_size; c[c_size] = '\0'; return part_size; } char *str( ) { return c; } size_t size( ) { return c_size; } }; int main( int argc, char *argv[] ) { char *url; Easy curl; MemoryWriter w; if( argc != 2 ) { cerr << "usage: test2 " << endl; return EXIT_FAILURE; } url = argv[1]; curl.setOpt( Options::Url( url ) ); //curl.setOpt( Options::Header( true ) ); //curl.setOpt( Options::Verbose( true ) ); Types::WriteFunctionFunctor functor( &w, &MemoryWriter::f ); Options::WriteFunction *wf = new Options::WriteFunction( functor ); curl.setOpt( wf ); curl.perform( ); cout << cURLpp::Infos::ResponseCode::get( curl ) << endl << w.size( ) << " " << url << endl; cout << w.str( ) << endl; return EXIT_SUCCESS; }