Question

Je reçois cette erreur en utilisant la méthode cookie_jar:

Can't call method cookie_jar on an undefined value

Voici mon code:

my $cookie_jar= new HTTP::Cookies;
my $ua=new LWP::UserAgent;
my %cookies= fetch CGI::Cookie;
my $encoded=$cookies{'SCred'};
$cookie_jar->set_cookie(1, "SCred", $encoded, "/", $SSO_DOMAIN,  "", 0, 0, 60*60, 0);
$ua->cookie_jar($cookie_jar); # I get error on this line

Une idée pourquoi je reçois cette erreur?

Était-ce utile?

La solution

J'ai essayé votre code (avec strictes, mises en garde et ce que je pense sont les modules requis, avec rotation des variables libres en chaînes):

kyle@indigo64 ~[home*]$ cat x.pl
use strict;
use warnings;
use HTTP::Cookies;
use LWP::UserAgent;
use CGI::Cookie;

my $ua         = new LWP::UserAgent;
my %cookies    = fetch CGI::Cookie;
my $encoded    = $cookies{'SCred'};

my $cookie_jar = new HTTP::Cookies;
$cookie_jar->set_cookie(
  1, "SCred", '$encoded',
  "/", '$SSO_DOMAIN',  "",
  0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar);

print "ua: ",$ua,"\n";
print "ua->cookie_jar: ",$ua->cookie_jar,"\n";
mortis@indigo64 ~[home*]$ perl x.pl
ua: LWP::UserAgent=HASH(0x82f8cc8)
ua->cookie_jar: HTTP::Cookies=HASH(0x82f8b84)
kyle@indigo64 ~[home*]$ 

et cela fonctionne. Vous pouvez soit poster un exemple plus complet, ou sont là des lignes entre le « $ ua = new ... » et « $ UA-> » cookie_jar lignes où $ ua est réaffecté ou autre jeu à FNUD? Si vous imprimez la valeur de « $ ua » juste avant l'appel pour vous cookie_jar devriez voir qu'il est FNUD, il faut reinitialise quelque part entre la première affectation et où vous appelez cette méthode.

Autres conseils

Juste pour exclure des interactions étranges, essayez ce qui suit:

my $cookie_jar = HTTP::Cookies->new;
my $ua = LWP::UserAgent->new;
my %cookies = CGI::Cookie->fetch;
my $encoded = $cookies{'SCred'};
$cookie_jar->set_cookie(
    1, "SCred", $encoded, "/", $SSO_DOMAIN,  "", 0, 0, 60*60, 0
);
$ua->cookie_jar($cookie_jar); # I get error on this line

Maintenant, pour une raison quelconque, $ua est indéfinie, ce qui signifie que l'appel du constructeur:

my $ua = LWP::UserAgent->new;

a échoué. Je ne suis pas trop familier avec fastcgi. Cependant, LWP::UserAgent croasse en cas de défaillance du constructeur:. Je ne sais pas comment vous atteignez la ligne en question

Avez-vous vérifié les journaux du serveur? Total tiré dans l'obscurité: Est-ce que ce qui suit ajouter toute information utile dans le journal d'erreur

my $ua = eval { LWP::UserAgent->new }
    or warn "LWP::UserAgent->new failed: $@";

Si tel est l'erreur réelle que vous obtenez, ce n'est pas un problème avec cookie_jar. Cela se produit juste pour être la première méthode que vous essayez d'appeler. Vérifiez que vous obtenez en fait un objet lorsque l'utilisateur quand font-agent.

Supprimer tous les trucs de cookies et d'essayer la méthode agent:

use strict;
my $ua = eval { LWP::UserAgent->new }
    or die "Could not make user-agent! $@";
$ua->agent("TestAgent");

Si quelque chose va mal dans le constructeur, vous devriez être capable de l'attraper. Cependant, si votre script est je pense que vous n'avez pas déjà mort-ing, quelque chose d'autre mal. Si LWP :: UserAgent :: nouvelles pistes dans un problème, il croasse déjà. La seule chose qu'il peut revenir est une valeur définie qu'elle a déjà appelé les méthodes sur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top