Snapshot: Obteniendo archivos HTTP en C++
September 25th, 2008 by Jorge MachinYa es común para un programador, no solamente el tener que leer archivos del disco duro local, sino también leerlos desde un sitio web; Ya sea un web service, una imagen o un XML. Afortunadamente la libreria libcurl resuelve el problema con muy pocas líneas de código.
En este post, pongo un pequeño ejemplo de como se usaría en C++ para pequeños programas de apoyo:
#include <iostream>
#include "curl/curl.h"
class URLFile {
public:
std::string get( const std::string &URL ) {
// Inicialización:
CURL *curl = curl_easy_init();
curl_easy_setopt( curl, CURLOPT_URL, URL.c_str() );
curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, &URLImage::write_data);
curl_easy_setopt( curl, CURLOPT_WRITEDATA, &data);
// Obtén el archivo:
CURLcode result = curl_easy_perform(curl);
// Al final hay que limpiar todo:
curl_easy_cleanup(curl);
if (result != CURLE_OK) {
return "";
}
return data;
}
private:
// Variable que usamos para guardar el contenido del archivo:
std::string data;
// Callback que utiliza curl:
static size_t write_data( char *buffer, size_t size, size_t nmemb, void *userp ) {
int len = size * nmemb;
if ( buffer != NULL )
( ( std::string * ) userp )->append( buffer, len );
return len;
}
};
int main() {
URLFile file;
std::string test = file.get( "www.machin.com.mx" );
std::cout <<"Test:" <<std::endl <<test <<std::endl;
return 0;
}
Posteado en C/C++, Programación, Snapshots | No hay comentarios »