IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[langage] [debutant]INET


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut [langage] [debutant]INET
    Bonjour,
    Je cherche à atteindre une page Web qui est derrière un formulaire qui envoie des données par POST.
    Voici le script que j'ai pu reconstituer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/usr/bin/perl -w
    use strict;
    use IO::Socket;
     
    my ( $contents, $fichier);
     
    my $ljsock = IO::Socket::INET->new( PeerAddr 	=> "www.site.com",
    				PeerPort	=> "80",
    				Proto		=> "tcp",
    				Type		=> SOCK_STREAM)
    or die "Couldn't connect to the site.com web server : $@\n";
     
    	my $string = "Param1=Val&Param2=Val";
    	my $line1 = "POST /page.php HTTP/1.0\r\n";
    	my $line2 = "Host: www.site.com\r\n"."User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20050101\r\n";
    	my $line3 = "Content-type: application/x-www-form-urlencode\dr\n";
    	my $line4 = "Content-length: " . length($string) . "\r\n";
    	my $line5 = "\r\n"; 
    	print $ljsock $line1 . $line2 . $line3 . $line4 . $line5  . $string. "\r\n\r\n";
    	my $reply = <$ljsock>;
     
    	while(<$ljsock>) {
    		$contents .= <$ljsock> ;
    	}
    	$fichier='temp2/resultat.html';
    	open F, ">$fichier"; # ouverture en écriture
    	print F $contents; # écriture
    	close F;
    }
    Seulement, il se trouve que la page html que je reçois n'est pas complète ! un diff m'informe qu'il manque environ une ligne sur deux... j'ai de la peine à comprendre !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 44
    Points : 43
    Points
    43
    Par défaut
    Bon problème stupidement contourné en mettant un print <$ljsoc> et en récupérant les données par un perl lescript.pl > fichier

  3. #3
    vic
    vic est déconnecté
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2002
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 431
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Il y a la librairie WWW::Mechanize très bien faite pour ce genre d'applications.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [langage][debutant]remplacement d'un caractere
    Par sly33 dans le forum Langage
    Réponses: 5
    Dernier message: 27/06/2005, 17h50
  2. [langage] [Débutant] Erreur scalar found
    Par bartmarley dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2005, 11h50
  3. Réponses: 2
    Dernier message: 21/02/2005, 10h42
  4. [langage] [debutant]Entree standart
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 02/07/2003, 12h50
  5. [langage] [debutant] expression reguliere
    Par toto_titi dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2003, 09h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo