Envoyer des données à une url en post dans un cgi

Envoyer des données à une url en post dans un cgi - Perl - Programmation

Marsh Posté le 22-06-2006 à 09:33:54    

Bonjour à tous,
 
Voilà, je débute dans l'écriture d'un cgi et j'ai besoin de quelquechose de bien précis.
J'aimerais pouvoir soumettre des infos en post à une url, chose que je sais faire en php.
Je vous donne le code php pour que ce soir plus clair
 
 $sock = fsockopen( "www.blabla.com", 80, &$errno, &$errstr);
 if (!$sock)
 {
  fwrite($handle, "erreur!!" );
 }
 else
 {
  fwrite($handle, "ok !!!!!" );
 }
 
      $data = "mes_infos_a_transmettre";
 
       fputs($sock, "POST /send_infos.php HTTP/1.1\r\n" );
       fputs($sock, "Host:www.blabla.com \r\n" );
       fputs($sock, "Content-type: application/x-www-form-urlencoded\r\n" );
 
 // On définit la taille des données envoyés par l'intermediaire
 // de la fonction strlen()
 fputs($sock, "Content-length: " . strlen($data) . "\r\n" ); // taille
 
 // On définit les différents langages acceptés
 fputs($sock, "Accept: */*\r\n" ); // données acceptés par le navigateur
 
 // On envoi les données
 fputs($sock, "\r\n" ); // Ligne de séparation
 fputs($sock, "$data\r\n" ); // Envoi des données
 fputs($sock, "\r\n" ); // Ligne de séparation
 
 // Fermeture du socket
 fclose($sock);
 
 
Ce code permet donc d'envoyer le contenu de $data à l'url www.blabla.com/date/send_infos.php
 
 
J'aimerais réaliser le même code dans mon script cgi.  
Mais je ne sais pas comment ouvrir une connexion et appeler un url.
Pouvez-vous m'éclairer ?

Reply

Marsh Posté le 22-06-2006 à 09:33:54   

Reply

Marsh Posté le 22-06-2006 à 09:44:55    

regarde du coté de LWP
il y a un cookbook tres bien fait dans la distribution
il y a aussi un module LWP-Simple-POST mais je ne sais pas ce qu'il vaut

Reply

Marsh Posté le 22-06-2006 à 11:00:03    

J'ai essayé avec ce code :
 
# ouvre une connexion sur le serveur
    my $sock = IO::Socket::INET->new(
        PeerAddr => 'www.blabla.com',
        PeerPort => 'http(80)',
        Proto    => 'tcp'
    ) or die "Impossible de se connecter";
 
 my $infos = "info1=1&info2=2";
 
 # envoie la requête
     
 print $sock "GET /page_test.php HTTP/1.0\015\012Host: www.blabla.comrn";
 print $sock "Content-type: application/x-www-form-urlencoded\r\n";
 print $sock "Content-length: ".length($infos)."\r\n";
 print $sock "Accept: */*\r\n";
 print $sock "\r\n";
 print $sock "$infos\r\n";
 print $sock "\r\n";
      close $sock or die "close: $!";
 
 
je sais que ma page est bien appelée grace à un fichier de log, cepedant, je n'arrive pas à récupérer mes infos en querystring.
Mes variables passée en Get sont vides. il ne doit pas me manquer grand chose mais je ne saisis pas quoi !
 
 

Reply

Marsh Posté le 22-06-2006 à 12:42:15    

La tu fais un GET
remplace GET par POST et ca devrait marcher
 
Mais bon franchement tu devrais utiliser LWP, pasque la avec ton systeme "à la main" tu risque le bug au moindre cas suspect

Reply

Marsh Posté le 22-06-2006 à 14:27:08    

Effectivement, le problème venait de là, ça fonctionne à présent !!
 
Merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed