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

Modules Perl Discussion :

Connexion sur site distant avec un client écrit en PERL ??


Sujet :

Modules Perl

  1. #1
    Membre du Club Avatar de Cygnus Saint
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 45
    Points
    45
    Par défaut Connexion sur site distant avec un client écrit en PERL ??
    J’essai de réaliser un petite application perl qui émet des requêtes http. J’arrive a récupérer le contenu d’une page web mais je n’arrive pas à transmettre des arguments à cette page: Je voudrais que mon script puisse se connecter sur mon site en donnant mes identifiant ( Login + mot de passe ).

    Ca bug mais je ne sais pas pourquoi.


    Voic le code:

    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
    $username       = 'MonLogin';
    $password       = 'motdepasse';
    $server         = 'http://www.monsite.com';
    $page_connexion = '/connexion.php' ;
     
     
    use LWP::UserAgent;
     $ua = new LWP::UserAgent;
     $ua->agent("AgentName/0.1 " . $ua->agent);
     
     # Creation d'une requete
     my $req = new HTTP::Request POST => $server.$page_connexion."HTTP/1.0\nHost: \nAccept: */*\nCookie:username=%s; password=%s\nConnection: close\n\n",$username,$password;
     
     
     $req->content_type('application/x-www-form-urlencoded');
     $req->content('match=www&errors=0');
     
     # On passe la requete à l'agent et on attend le résultat
     my $res = $ua->request($req);
     
     # Si le resultat est un succes (code HTTP 200) on affiche son contenu
     if ($res->is_success) {print $res->content;}
     
     # Sinon previent que URL defectueuse
     else {print "Cette URL ne répond pas\n";}
    Voici l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bad header argument at C:\automatique.pl line 20
    La ligne 20:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     # Creation d'une requete
     my $req = new HTTP::Request POST => $server.$page_connexion."HTTP/1.0\nHost: \nAccept: */*\nCookie:username=%s; password=%s\nConnection: close\n\n",$username,$password;

  2. #2
    Membre du Club Avatar de Cygnus Saint
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 66
    Points : 45
    Points
    45
    Par défaut
    J'ai corrigé:

    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
    $username       = 'Login';
    $password       = 'motdepasse';
    $server         = 'http://www.monsite.com';
    $page_connexion = '/connexion.php' ;
     
    use LWP::UserAgent;
     $ua = new LWP::UserAgent;
     $ua->agent("AgentName/0.1 " . $ua->agent);
     
     # Creation d'une requete
     
    my $req = new HTTP::Request GET => $server.$page_connexion."HTTP/1.0\nHost: \nAccept: */*\nCookie:".$username.$password."\nConnection: close\n\n";
    my $req = new HTTP::Request POST => $server."/admin.html";
     
     
     $req->content_type('application/x-www-form-urlencoded');
     $req->content('match=www&errors=0');
     
     # On passe la requete à l'agent et on attend le résultat
     my $res = $ua->request($req);
     
     # Si le resultat est un succes (code HTTP 200) on affiche son contenu
     if ($res->is_success) {print $res->content;}
     
     # Sinon previent que URL defectueuse
     else {print "Cette URL ne répond pas\n";}
    Je n’ai plus d’erreur mais la connexion sur mon compte (Avec Login + MDP) n’a pas l’air de se faire, pourquoi ?

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ce que tu fais est étrange : tu mélanges du haut niveau LWP et du niveau assez bas (tu écris ta requête à la main avec HTTP::Request)...
    LWP offre un support de haut niveau pour l'identification et les cookies, pourquoi ne pas l'utiliser ?

    Par ailleurs ici tu as une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $req = new HTTP::Request GET => $server.$page_connexion."HTTP/1.0\nHost: \nAccept: */*\nCookie:".$username.$password."\nConnection: close\n\n";
    my $req = new HTTP::Request POST => $server."/admin.html";
    $req est déclaré deux fois, et tu n'utilises pas la première déclaration, elle ne sert donc à rien... Tu devrais essayer d'utiliser 'use strict;' pour éviter de telles erreurs.

    --
    Jedaï

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/12/2009, 23h21
  2. Connexion sur BD distante avec serveur LINUX
    Par tissard dans le forum Oracle
    Réponses: 9
    Dernier message: 11/08/2009, 15h49
  3. la connexion sur site jeu pogo plante internet
    Par M.Duchemin dans le forum Applets
    Réponses: 3
    Dernier message: 14/01/2008, 18h05
  4. [débutant] Connexion à un SGBD distant avec ODBC
    Par Thor Tillas dans le forum Access
    Réponses: 4
    Dernier message: 11/01/2007, 08h31
  5. Réponses: 7
    Dernier message: 06/12/2005, 16h04

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