Giuly
26-11-2005, 13: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
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