Leer Response de url con mod_curl

Started by fulgorelizz, July 03, 2016, 06:25:19 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

fulgorelizz

Quote
import "mod_video"
import "mod_curl"
import "mod_say"
import "mod_mouse"
import "mod_text"
import "mod_map"
import "mod_file"
Import "mod_key"
Import "mod_proc"


Global
   int quit = 0;
   string url = "http://api.twitter.com/1/statuses/update.json";
   
   string user = "username:password";    // aqui escribir el username y password..
   string msg_ = "BennuGD post test..";
   string respuesta = "";




Process main()
Private
    int i=0, status=0, curl=0;
    string output;


Begin
    set_mode(320, 480, 16);
   set_fps(30,0);
   
   curl = curl_init();
    if(curl == -1)
        say("Curl initialisation failed, quitting");
        quit = 1;
        return;
    end;
   
   
   curl_setopt(curl, CURLOPT_URL, url);
   curl_setopt(curl, CURLOPT_PORT, 80);
   curl_setopt(curl, CURLOPT_POST, 1);
   curl_setopt(curl, CURLOPT_POSTFIELDS, msg_);
   curl_setopt(curl, CURLOPT_USERPWD, user);
   //curl_exec(curl);
   curl_perform(curl, &status);
   
   while(status == -2)
      frame;
   end
   curl_cleanup(curl);
   
   write(0,160,20,4,"Transfer Completed.");   
   loop
      if(key(_esc))
         exit(0,0);
      end
      frame;
   end
end
Saludos miembros! paseandome por el foro me consegui este codigo, me mola super bien, pero hay algo que necesito saber, como hago para leer lo que la URL haya procesado?? es decir, el response de la URL???
Gracias de Antemano!!!
Compiling code -- generating exe...

Drumpi

#1
Respondiendo a lo del otro hilo:
Vale, me he descargado la librería, y no hay mucha infromación, la verdad. Me he estado leyendo el código fuente, pero son las 3 de la mañana y no entiendo gran cosa. Creo que el "perform" ejecuta una función C que hace el envío del mensaje a la URL, y devuelve un valor, que no sé si es la información en sí o el código de éxito/error. Es posible que en realidad la información se guarde en una estructura interna de la librería que aun no he conseguido descifrar.

Leyendo el ejemplo que trae la librería, veo que se puede descargar el resultado a un fichero, que es básicamente lo que hace ese ejemplo, pero hay algo relacionado con descargar a una string, que parece que está desactivado (algo como la función curl_fetch).
Mirando un poco más, veo que hay tres funciones relacionadas con curl_setopt. Una de ellas es la que le pasas una string y te devuelve un fichero, hay una que le pasas un entero pero no la entiendo, y una tercera que le pasas un puntero, y que tiene toda la pinta de ser la que buscas ¿Puntero a qué? Ni idea, supongo que la estructura de datos devuelta tienes que saberla de antemano.

No quiero elucubrar más. Es muy tarde, no tengo ni idea de qué estoy hablando, y seguro que Pixel sabe más que yo al respecto, porque se parece mucho a algo que hizo con PixDash.
:D :D :D

Lo que tienen las librerías externas es que son eso, externas al lenguaje, y ahí sólo te puede ayudar el autor o quien las haya usado, y ninguno es mi caso, lo siento.

EDIT: perdón, nombre de función equivocada.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

panreyes

Drumpi: PixDash tiraba de exec y wget xD

Creo que tengo un código de cURL que podría ayudar, luego lo comparto

panreyes

Este es el parámetro que te falta:

curl_setopt(curl, CURLOPT_WRITEDATA, &output);

output es una string, y se redirige lo recogido por curl en esa variable con la función anterior.


Function test_red();
Private
int curl;
string output;
int status;
Begin
curl = curl_init();
if(curl == -1)
say("Error 404");
exit();
end

curl_setopt(curl, CURLOPT_WRITEDATA, &output);
curl_setopt(curl, CURLOPT_URL, "http://www.panreyes.com/ip.php");
curl_perform(curl, &status);

while(status!=0) frame; end
curl_cleanup(curl);
if(output=="")
exit();
else
say("IP: "+output);
end
End

fulgorelizz

siento que te amo!!! jajajajaja Gracias, corrio de maravillaaaa!!!
Compiling code -- generating exe...

Drumpi

¿Entonces todos los datos de respuesta se guardan en una string? o sea, que si se le pide el index.html se obtiene todo el html en formato string para ser analizado ¿no? y lo mismo si se pide cualquier fichero o cualquier cosa.
¿Y si le pido el resultado de 2+3 nos devuelve 5 ó "5"? Es decir, el entero 5 o la cadena de texto "5".
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

fulgorelizz

Quote from: Drumpi on July 04, 2016, 04:39:03 PM
¿Entonces todos los datos de respuesta se guardan en una string? o sea, que si se le pide el index.html se obtiene todo el html en formato string para ser analizado ¿no? y lo mismo si se pide cualquier fichero o cualquier cosa.
¿Y si le pido el resultado de 2+3 nos devuelve 5 ó "5"? Es decir, el entero 5 o la cadena de texto "5".

devuelve un string! pero ya tengo la mañita de hacer conversiones!! aprece que bennu en ese sentido diferencia nativamente los numeros de las letras, digo porque no da errores cuando concatenas un INT con STRING para mostrar con write  o con say, de ser asi daria error de tipos como otros lenguajes, ejemplo c#
Compiling code -- generating exe...