Binding mod_curl [Descarga de ficheros de Internet]

Started by josebita, November 25, 2011, 12:32:52 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

josebita

(Estás con Snow Leopard, ¿verdad?. Yo diría que la libcurl contra la que compilé es más moderna que la de Snow Leopard y por eso no os cargaba el módulo)

Sí, el ejemplo lo que hace es descargarse el HTML de la página principal del foro a una cadena e imprimirlo en la consola, así que sí hace lo que debe.

Sobre lo de los POSTs, la idea es que os pongais en un servidor un formulario HTML normal y la libcurl lo que haría es rellenar ese formulario y leer la respuesta del servidor a un string que luego procesais para leer los highscores, p. ej.

Teneis información sobre cómo crear formularios aquí:
http://www.w3schools.com/html/html_forms.asp
http://html.conclase.net/w3c/html401-es/interact/forms.html

Y lo normal es que los manejeis con php o algo similar. Si teneis dudas, preguntad y os contestamos, pero creo que es bueno que os lo miréis vosotros mismos para que os enteréis bien de cómo funciona. Vamos, que le deis caña al google :)

Erkosone

Ok, así lo haremos, suerte que pinger se maneja bien en este terreno.


Gracias por la info  :)

pinger

El tema del formulario en php y mysql ya estoy en ello, poco a poco lo voy sacando, no soy un entendido de ninguno de esos lenguajes precisamente. Lo que me gustaría es poder prescindir del formulario y enviar directamente los datos al archivo de procesamiento desde el programa, para evitar que alguien se ponga 1000000 de puntos solo por ir a una dirección web.

Muchas gracias por la ayuda Joseba.

josebita

Desde la mod_curl debes ir directamente a la página que procesa eñ formulario, como si ya lo hubieras rellenado.
La forma de rellenar el formulario es equivalente al siguiente código c:
http://curl.haxx.se/libcurl/c/postit2.html

josebita

Enlazo binario de mod_curl para windows y ejemplo de uso en el primer post.
¡Parece que esta vez linux va a ser el último! :)

josebita

Acabo de actualizar el binario para windows. Ahora para descargar algo a una string no hace falta usar la función curl_fetch sino que directamente se pondría:
Process main()
Private
    int i=0, status=0, curl=0;
    int width=640, height=480;
    string output;

Begin
    set_mode(width, height, 16);


    say("Starting download");
   
    // Start libcurl, set options, perform transfer
    curl = curl_init();
    if(curl == -1)
        say("Curl initialisation failed, quitting");
        quit = 1;
        return;
    end;
   
    curl_setopt(curl, CURLOPT_NOPROGRESS,    1);
    curl_setopt(curl, CURLOPT_WRITEDATA, &output);
    curl_setopt(curl, CURLOPT_URL, "http://www.google.es/");
   
    curl_perform(curl, &status);
   
    // Wait for the transfer to finish
    while(status != 0)
        FRAME;
    end;
   
    write(0, 0, 0, 0, output);
   
    curl_cleanup(curl);
   
    say("Download done!");

    while(! mouse.right)
        FRAME;
    end;
    quit=1;
End;
A partir de aquí podeis dar el API de la librería por congelado en el sentido de que las funciones que ya existen casi con total seguridad no van a cambiar. En el futuro añadiré más constantes para curl_setopt y añadiré alguna funcioncilla de curl_easy que me falta pero el código que escribais con esta librería debería funcionar en versiones futuras.


Falta por actualizar las versiones para iOS y Lion, así como añadir la versión para Linux.


[Nota] Si alguien usa la librería desde windows para juegos iOS, tiene aquí una versión de la librería para win32 que incluye las mismas funciones que la versión de iOS.

josebita

Actualizada la librería para Mac OSX en el primer post.
Link, ¿podrías meter la lib para la próxima versión del bennupack?. Que me hace ilusión :)

pinger

Ya tengo todo preparado en nuestro server, ahora "solo" toca aprender como va la lib. A leer toca.

josebita

Quote from: pinger on January 04, 2012, 04:03:02 AM
Ya tengo todo preparado en nuestro server, ahora "solo" toca aprender como va la lib. A leer toca.
A ver si en un ratillo subo al blog un poco de código de ejemplo.

josebita

No lo comenté aquí, pero teneis la versión para linux en mi PPA.

La momia que fuma

Me salta este fallo al intentar compilar en windows, que puede ser?



FreeYourMind


josebita

#87
Quote from: La momia que fuma on January 12, 2012, 06:47:41 PM
Me salta este fallo al intentar compilar en windows, que puede ser?



Puff, por eso no me gusta distribuir binarios para windows... En linux es más fácil porque es el sistema el que se encarga de las dependencias :)

¿Necesitas https?


[Edito] Intenta reemplazar la libcurl.dll con la de la carpeta "nossl" o "SSL" de este paquete:
http://www.paehl.com/open_source/?download=curl_DLL_ONLY.7z

La momia que fuma

Con la de "nossl" ya funciona a las mil maravillas  ;D


Gracias! Karma++

josebita

Quote from: La momia que fuma on January 12, 2012, 08:07:21 PM
Con la de "nossl" ya funciona a las mil maravillas  ;D


Gracias! Karma++
Nada :) Imagino que las otras que vienen funcionarán tb, entonces.

En cuanto tenga un rato acutalizo el binario para windows.