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 :

LWP::Parallel::UserAgent et erreur 401


Sujet :

Modules Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 12
    Points
    12
    Par défaut LWP::Parallel::UserAgent et erreur 401
    Bonjour,

    J'utilise le module LWP::Parallel::UserAgent pour récupérer en parallèle des pages web. Je rencontre un problème depuis que j'ai activé l'autorisation des redirections :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    my $ua = LWP::Parallel::UserAgent->new();
    ...
    $ua->redirect(1);
    $ua->max_redirect(2);
    Lorsque j'initialisais redirect à 0, si le programme tentait de récupérer une page non autorisée (HTTP/1.1 401 Unauthorized), la réponse à cette requête était simplement négative, sans déclencher de die.

    Selon la doc Perl, la valeur redirect autorise à la fois les redirections ET les requêtes d'authentification :

    $ua->redirect ( $ok )
    Changes the default value for permitting Parallel::UserAgent to follow redirects and authentication-requests.
    Je pense que c'est ce dernier point qui provoque l'erreur suivante lorsque le programme tente de récupérer une page non autorisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [DIE]      Usage: $h->header($field, ...) at (eval 17) line 1
    Cette erreur arrive à ce stade du programme, après l'enregistrement des requêtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $entries = $ua->wait();
    Comment faire pour intercepter l'erreur 401 de manière propre ? Car le problème est que je lance des requêtes parallèlement, du coup si j'ai une série, disons de 5 urls, à récupérer et que la 2nde provoque un die, alors la réponse des 3 suivantes passe à la trappe.


    Voici un debug plus verbeux avec l'utilisation du module LWP::Debug :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    LWP::Parallel::UserAgent::_perform_read: '0' = read_chunk from LWP::Parallel::UserAgent::Entry=HASH(0x9a11640) (http://url_qui_va_pas.com)
    LWP::Parallel::UserAgent::on_return: (http://url_qui_va_pas.com, 401, Unauthorized)
    LWP::Parallel::UserAgent::_perform_read: received '1' from on_return
    LWP::Parallel::UserAgent::_remove_current_connection: (LWP::Parallel::UserAgent::Entry=HASH(0x9a11640) [http://url_qui_va_pas.com] )
    LWP::Parallel::UserAgent::handle_response: -> (LWP::Parallel::UserAgent::Entry=HASH(0x9a11640) [http://url_qui_va_pas.com] )
    LWP::Parallel::UserAgent::handle_response: Handling result: Unauthorized
    Usage: $h->header($field, ...) at (eval 17) line 1
    Ce die est résolument violent !
    Merci de votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    C'est très bizarre, j'ai débuggé UserAgent.pm et dans la routine handle_response, c'est la ligne suivante qui provoque le DIE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     LWP::Debug::trace("<- ($response [".$response->header.'] )');
    Il s'agit d'un message de debug qui utilise mal la routine header. Cette routine attend un argument.... Si cette ligne est commentée, pas de bug.

    J'envoie un mail à l'auteur du module. Je posterai ici dès que j'aurai une réponse.

Discussions similaires

  1. fonction register dans LWP::Parallel::UserAgent
    Par ardoise dans le forum Modules
    Réponses: 4
    Dernier message: 23/01/2009, 15h08
  2. Erreur 401.2 sur serveur IIS 6.0
    Par Arthis dans le forum IIS
    Réponses: 0
    Dernier message: 27/07/2007, 10h20
  3. [Mail] ERREUR 401 petit souci
    Par depelek dans le forum Langage
    Réponses: 7
    Dernier message: 07/12/2006, 17h11
  4. Erreur 401 + IIS
    Par DiabloZizi dans le forum Autres Logiciels
    Réponses: 10
    Dernier message: 25/03/2006, 12h26
  5. Question a propos de LWP::Parallel::UserAgent
    Par shinux2004 dans le forum Modules
    Réponses: 2
    Dernier message: 03/09/2005, 02h01

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