Envoyer des données à une url en post dans un cgi - Perl - Programmation
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
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 !
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
Marsh Posté le 22-06-2006 à 14:27:08
Effectivement, le problème venait de là, ça fonctionne à présent !!
Merci !
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 ?